Reformated files

This commit is contained in:
Kristofers Solo 2022-06-01 15:09:09 +00:00
parent da5f9ad0f1
commit 897fbd4666
15 changed files with 1577 additions and 1644 deletions

View File

@ -29,12 +29,15 @@
"terminal.integrated.fontFamily": "JetBrainsMono NF", "terminal.integrated.fontFamily": "JetBrainsMono NF",
"terminal.integrated.defaultProfile.linux": "zsh", "terminal.integrated.defaultProfile.linux": "zsh",
"cSpell.userWords": [ "cSpell.userWords": [
"alacritty",
"blit", "blit",
"Cagulis", "Cagulis",
"Cena", "Cena",
"cenu", "cenu",
"cirala",
"dirnx", "dirnx",
"dirny", "dirny",
"dotfiles",
"grafiki", "grafiki",
"Istabu", "Istabu",
"Izvietošanas", "Izvietošanas",
@ -42,10 +45,14 @@
"Kristiāns", "Kristiāns",
"Kristofers", "Kristofers",
"Kvadratūra", "Kvadratūra",
"lfimg",
"nsxiv",
"nvim",
"pathlib", "pathlib",
"pygame", "pygame",
"roboto", "roboto",
"Sērija", "Sērija",
"Solorice",
"Stāvs", "Stāvs",
"xlabel", "xlabel",
"xticks", "xticks",
@ -56,7 +63,10 @@
"suppressLineUncommittedWarning": true "suppressLineUncommittedWarning": true
}, },
"vsicons.dontShowNewVersionMessage": true, "vsicons.dontShowNewVersionMessage": true,
"indentRainbow.excludedLanguages": ["plaintext", "django-txt"], "indentRainbow.excludedLanguages": [
"plaintext",
"django-txt"
],
"[markdown]": { "[markdown]": {
"editor.defaultFormatter": "yzhang.markdown-all-in-one" "editor.defaultFormatter": "yzhang.markdown-all-in-one"
}, },
@ -109,5 +119,6 @@
] ]
}, },
"workbench.colorTheme": "Dracula Soft", "workbench.colorTheme": "Dracula Soft",
"workbench.iconTheme": "material-icon-theme" "workbench.iconTheme": "material-icon-theme",
"Lua.telemetry.enable": true
} }

View File

@ -39,8 +39,6 @@ window:
columns: 0 columns: 0
lines: 0 lines: 0
opacity: 0.9 opacity: 0.9
# Window position (changes require restart) # Window position (changes require restart)
# #
@ -72,9 +70,6 @@ window:
# - buttonless: Title bar, transparent background and no title bar buttons # - buttonless: Title bar, transparent background and no title bar buttons
decorations: none decorations: none
# Startup Mode (changes require restart) # Startup Mode (changes require restart)
# #
# Values for `startup_mode`: # Values for `startup_mode`:
@ -191,8 +186,8 @@ draw_bold_text_with_bright_colors: true
colors: colors:
# Default colors # Default colors
primary: primary:
background: '#1d1f21' background: "#1d1f21"
foreground: '#c5c8c6' foreground: "#c5c8c6"
# Bright and dim foreground colors # Bright and dim foreground colors
# #
@ -200,8 +195,8 @@ colors:
# present. If the bright foreground color is not set, or # present. If the bright foreground color is not set, or
# `draw_bold_text_with_bright_colors` is `false`, the normal foreground # `draw_bold_text_with_bright_colors` is `false`, the normal foreground
# color will be used. # color will be used.
dim_foreground: '#828482' dim_foreground: "#828482"
bright_foreground: '#eaeaea' bright_foreground: "#eaeaea"
# Cursor colors # Cursor colors
# #
@ -237,8 +232,8 @@ colors:
# background: '#000000' # background: '#000000'
bar: bar:
background: '#282828' background: "#282828"
foreground: '#EBEBE9' foreground: "#EBEBE9"
# Keyboard regex hints # Keyboard regex hints
hints: hints:
@ -247,16 +242,16 @@ colors:
# Allowed values are CellForeground/CellBackground, which reference the # Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff. # affected cell, or hexadecimal colors like #ff00ff.
start: start:
foreground: '#1d1f21' foreground: "#1d1f21"
background: '#e9ff5e' background: "#e9ff5e"
# All characters after the first one in the hint label # All characters after the first one in the hint label
# #
# Allowed values are CellForeground/CellBackground, which reference the # Allowed values are CellForeground/CellBackground, which reference the
# affected cell, or hexadecimal colors like #ff00ff. # affected cell, or hexadecimal colors like #ff00ff.
end: end:
foreground: '#e9ff5e' foreground: "#e9ff5e"
background: '#1d1f21' background: "#1d1f21"
# Line indicator # Line indicator
# #
@ -280,39 +275,39 @@ colors:
# Normal colors # Normal colors
normal: normal:
black: '#313539' black: "#313539"
red: '#b02626' red: "#b02626"
green: '#40a62f' green: "#40a62f"
yellow: '#f1e635' yellow: "#f1e635"
blue: '#314ad0' blue: "#314ad0"
magenta: '#b30ad0' magenta: "#b30ad0"
cyan: '#32d0fc' cyan: "#32d0fc"
white: '#acadb1' white: "#acadb1"
# Bright colors # Bright colors
bright: bright:
black: '#717174' black: "#717174"
red: '#b02626' red: "#b02626"
green: '#40a62f' green: "#40a62f"
yellow: '#f1e635' yellow: "#f1e635"
blue: '#314ad0' blue: "#314ad0"
magenta: '#b30ad0' magenta: "#b30ad0"
cyan: '#32d0fc' cyan: "#32d0fc"
white: '#acadb1' white: "#acadb1"
# Dim colors # Dim colors
# #
# If the dim colors are not set, they will be calculated automatically based # If the dim colors are not set, they will be calculated automatically based
# on the `normal` colors. # on the `normal` colors.
dim: dim:
black: '#676f78' black: "#676f78"
red: '#b55454' red: "#b55454"
green: '#78a670' green: "#78a670"
yellow: '#faf380' yellow: "#faf380"
blue: '#707fd0' blue: "#707fd0"
magenta: '#c583d0' magenta: "#c583d0"
cyan: '#8adaf1' cyan: "#8adaf1"
white: '#e0e3e7' white: "#e0e3e7"
# Indexed Colors # Indexed Colors
# #
@ -335,44 +330,42 @@ colors:
# #
# The bell is rung every time the BEL control character is received. # The bell is rung every time the BEL control character is received.
#bell: #bell:
# Visual Bell Animation # Visual Bell Animation
# #
# Animation effect for flashing the screen when the visual bell is rung. # Animation effect for flashing the screen when the visual bell is rung.
# #
# Values for `animation`: # Values for `animation`:
# - Ease # - Ease
# - EaseOut # - EaseOut
# - EaseOutSine # - EaseOutSine
# - EaseOutQuad # - EaseOutQuad
# - EaseOutCubic # - EaseOutCubic
# - EaseOutQuart # - EaseOutQuart
# - EaseOutQuint # - EaseOutQuint
# - EaseOutExpo # - EaseOutExpo
# - EaseOutCirc # - EaseOutCirc
# - Linear # - Linear
#animation: EaseOutExpo #animation: EaseOutExpo
# Duration of the visual bell flash in milliseconds. A `duration` of `0` will # Duration of the visual bell flash in milliseconds. A `duration` of `0` will
# disable the visual bell animation. # disable the visual bell animation.
#duration: 0 #duration: 0
# Visual bell animation color. # Visual bell animation color.
#color: '#ffffff' #color: '#ffffff'
# Bell Command
#
# Bell Command # This program is executed whenever the bell is rung.
# #
# This program is executed whenever the bell is rung. # When set to `command: None`, no command will be executed.
# #
# When set to `command: None`, no command will be executed. # Example:
# # command:
# Example: # program: notify-send
# command: # args: ["Hello, World!"]
# program: notify-send #
# args: ["Hello, World!"] #command: None
#
#command: None
selection: selection:
# This string contains all characters that are used as separators for # This string contains all characters that are used as separators for
@ -452,60 +445,60 @@ shell:
#ipc_socket: true #ipc_socket: true
#mouse: #mouse:
# Click settings # Click settings
# #
# The `double_click` and `triple_click` settings control the time # The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double # alacritty should wait for accepting multiple clicks as one double
# or triple click. # or triple click.
#double_click: { threshold: 300 } #double_click: { threshold: 300 }
#triple_click: { threshold: 300 } #triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing. # If this is `true`, the cursor is temporarily hidden when typing.
#hide_when_typing: false #hide_when_typing: false
# Regex hints # Regex hints
# #
# Terminal hints can be used to find text in the visible part of the terminal # Terminal hints can be used to find text in the visible part of the terminal
# and pipe it to other applications. # and pipe it to other applications.
#hints: #hints:
# Keys used for the hint labels. # Keys used for the hint labels.
#alphabet: "jfkdls;ahgurieowpq" #alphabet: "jfkdls;ahgurieowpq"
# List with all available hints # List with all available hints
# #
# Each hint must have a `regex` and either an `action` or a `command` field. # Each hint must have a `regex` and either an `action` or a `command` field.
# The fields `mouse`, `binding` and `post_processing` are optional. # The fields `mouse`, `binding` and `post_processing` are optional.
# #
# The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and
# `mouse.mods` accept the same values as they do in the `key_bindings` section. # `mouse.mods` accept the same values as they do in the `key_bindings` section.
# #
# The `mouse.enabled` field controls if the hint should be underlined while # The `mouse.enabled` field controls if the hint should be underlined while
# the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it.
# #
# If the `post_processing` field is set to `true`, heuristics will be used to # If the `post_processing` field is set to `true`, heuristics will be used to
# shorten the match if there are characters likely not to be part of the hint # shorten the match if there are characters likely not to be part of the hint
# (e.g. a trailing `.`). This is most useful for URIs. # (e.g. a trailing `.`). This is most useful for URIs.
# #
# Values for `action`: # Values for `action`:
# - Copy # - Copy
# Copy the hint's text to the clipboard. # Copy the hint's text to the clipboard.
# - Paste # - Paste
# Paste the hint's text to the terminal or search. # Paste the hint's text to the terminal or search.
# - Select # - Select
# Select the hint's text. # Select the hint's text.
# - MoveViModeCursor # - MoveViModeCursor
# Move the vi mode cursor to the beginning of the hint. # Move the vi mode cursor to the beginning of the hint.
#enabled: #enabled:
# - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\
# [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+"
# command: xdg-open # command: xdg-open
# post_processing: true # post_processing: true
# mouse: # mouse:
# enabled: true # enabled: true
# mods: None # mods: None
# binding: # binding:
# key: U # key: U
# mods: Control|Shift # mods: Control|Shift
# Mouse bindings # Mouse bindings
# #
@ -536,8 +529,8 @@ shell:
# #
# - `mods` (see key bindings) # - `mods` (see key bindings)
mouse_bindings: mouse_bindings:
# - { mouse: Right, action: ExpandSelection } # - { mouse: Right, action: ExpandSelection }
- { mouse: Middle, mode: ~Vi, action: PasteSelection } - { mouse: Middle, mode: ~Vi, action: PasteSelection }
# Key bindings # Key bindings
# #
@ -760,7 +753,7 @@ key_bindings:
# Vi Mode # Vi Mode
# - { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } # - { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode }
# - { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } # - { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom }
# - { key: Escape, mode: ~Search, action: ToggleViMode } # - { key: Escape, mode: ~Search, action: ToggleViMode }
# - { key: Escape, mode: Vi|~Search, action: ClearSelection } # - { key: Escape, mode: Vi|~Search, action: ClearSelection }
# - { key: I, mode: Vi|~Search, action: ToggleViMode } # - { key: I, mode: Vi|~Search, action: ToggleViMode }
# - { key: I, mode: Vi|~Search, action: ScrollToBottom } # - { key: I, mode: Vi|~Search, action: ScrollToBottom }
@ -858,24 +851,23 @@ key_bindings:
#- { key: F, mods: Command|Control, action: ToggleFullscreen } #- { key: F, mods: Command|Control, action: ToggleFullscreen }
#- { key: F, mods: Command, mode: ~Search, action: SearchForward } #- { key: F, mods: Command, mode: ~Search, action: SearchForward }
#- { key: B, mods: Command, mode: ~Search, action: SearchBackward } #- { key: B, mods: Command, mode: ~Search, action: SearchBackward }
#debug: #debug:
# Display the time it takes to redraw each frame. # Display the time it takes to redraw each frame.
#render_timer: false #render_timer: false
# Keep the log file after quitting Alacritty. # Keep the log file after quitting Alacritty.
#persistent_logging: false #persistent_logging: false
# Log level # Log level
# #
# Values for `log_level`: # Values for `log_level`:
# - Off # - Off
# - Error # - Error
# - Warn # - Warn
# - Info # - Info
# - Debug # - Debug
# - Trace # - Trace
#log_level: Warn #log_level: Warn
# Print all received window events. # Print all received window events.
#print_events: false #print_events: false

View File

@ -1,4 +1,3 @@
-- If LuaRocks is installed, make sure that packages installed through it are -- If LuaRocks is installed, make sure that packages installed through it are
-- found (e.g. lgi). If LuaRocks is not installed, do nothing. -- found (e.g. lgi). If LuaRocks is not installed, do nothing.
pcall(require, "luarocks.loader") pcall(require, "luarocks.loader")
@ -43,7 +42,7 @@ end
-- Handle runtime errors after startup -- Handle runtime errors after startup
do do
local in_error = false local in_error = false
awesome.connect_signal("debug::error", function (err) awesome.connect_signal("debug::error", function(err)
-- Make sure we don't go into an endless error loop -- Make sure we don't go into an endless error loop
if in_error then return end if in_error then return end
in_error = true in_error = true
@ -106,8 +105,8 @@ myawesomemenu = {
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal } { "open terminal", terminal }
} }
}) })
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu }) menu = mymainmenu })
@ -136,41 +135,41 @@ mytextclock:connect_signal("button::press",
-- Create a wibox for each screen and add it -- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join( local taglist_buttons = gears.table.join(
awful.button({ }, 1, function(t) t:view_only() end), awful.button({}, 1, function(t) t:view_only() end),
awful.button({ modkey }, 1, function(t) awful.button({ modkey }, 1, function(t)
if client.focus then if client.focus then
client.focus:move_to_tag(t) client.focus:move_to_tag(t)
end end
end), end),
awful.button({ }, 3, awful.tag.viewtoggle), awful.button({}, 3, awful.tag.viewtoggle),
awful.button({ modkey }, 3, function(t) awful.button({ modkey }, 3, function(t)
if client.focus then if client.focus then
client.focus:toggle_tag(t) client.focus:toggle_tag(t)
end end
end), end),
awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end), awful.button({}, 4, function(t) awful.tag.viewnext(t.screen) end),
awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end) awful.button({}, 5, function(t) awful.tag.viewprev(t.screen) end)
) )
local tasklist_buttons = gears.table.join( local tasklist_buttons = gears.table.join(
awful.button({ }, 1, function (c) awful.button({}, 1, function(c)
if c == client.focus then if c == client.focus then
c.minimized = true c.minimized = true
else else
c:emit_signal( c:emit_signal(
"request::activate", "request::activate",
"tasklist", "tasklist",
{raise = true} { raise = true }
) )
end end
end), end),
awful.button({ }, 3, function() awful.button({}, 3, function()
awful.menu.client_list({ theme = { width = 250 } }) awful.menu.client_list({ theme = { width = 250 } })
end), end),
awful.button({ }, 4, function () awful.button({}, 4, function()
awful.client.focus.byidx(1) awful.client.focus.byidx(1)
end), end),
awful.button({ }, 5, function () awful.button({}, 5, function()
awful.client.focus.byidx(-1) awful.client.focus.byidx(-1)
end)) end))
@ -194,7 +193,7 @@ awful.screen.connect_for_each_screen(function(s)
set_wallpaper(s) set_wallpaper(s)
-- Each screen has its own tag table. -- Each screen has its own tag table.
awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9"}, s, awful.layout.layouts[1]) awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-- Create a promptbox for each screen -- Create a promptbox for each screen
s.mypromptbox = awful.widget.prompt() s.mypromptbox = awful.widget.prompt()
@ -202,10 +201,10 @@ awful.screen.connect_for_each_screen(function(s)
-- We need one layoutbox per screen. -- We need one layoutbox per screen.
s.mylayoutbox = awful.widget.layoutbox(s) s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(gears.table.join( s.mylayoutbox:buttons(gears.table.join(
awful.button({ }, 1, function () awful.layout.inc( 1) end), awful.button({}, 1, function() awful.layout.inc(1) end),
awful.button({ }, 3, function () awful.layout.inc(-1) end), awful.button({}, 3, function() awful.layout.inc(-1) end),
awful.button({ }, 4, function () awful.layout.inc( 1) end), awful.button({}, 4, function() awful.layout.inc(1) end),
awful.button({ }, 5, function () awful.layout.inc(-1) end))) awful.button({}, 5, function() awful.layout.inc(-1) end)))
-- Create a taglist widget -- Create a taglist widget
s.mytaglist = awful.widget.taglist { s.mytaglist = awful.widget.taglist {
screen = s, screen = s,
@ -246,7 +245,7 @@ awful.screen.connect_for_each_screen(function(s)
}), }),
weather_widget({ weather_widget({
api_key = '3bc28ba1ee6eeaf28af31d9d948aecd1', api_key = '3bc28ba1ee6eeaf28af31d9d948aecd1',
coordinates = {56.861415323546815, 24.386162623793343}, coordinates = { 56.861415323546815, 24.386162623793343 },
show_daily_forecast = true, show_daily_forecast = true,
}), }),
--volume_widget{ --volume_widget{
@ -263,119 +262,119 @@ end)
-- {{{ Mouse bindings -- {{{ Mouse bindings
root.buttons(gears.table.join( root.buttons(gears.table.join(
awful.button({ }, 3, function () mymainmenu:toggle() end), awful.button({}, 3, function() mymainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext), awful.button({}, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev) awful.button({}, 5, awful.tag.viewprev)
)) ))
-- }}} -- }}}
-- {{{ Key bindings -- {{{ Key bindings
globalkeys = gears.table.join( globalkeys = gears.table.join(
awful.key( {}, "Pause", function () awful.spawn.with_shell("playerctl -a play-pause") end, awful.key({}, "Pause", function() awful.spawn.with_shell("playerctl -a play-pause") end,
{description="pause/play", group="media controls"}), { description = "pause/play", group = "media controls" }),
awful.key( {}, "#117", function () awful.spawn.with_shell("playerctl next") end, awful.key({}, "#117", function() awful.spawn.with_shell("playerctl next") end,
{description="play next", group="media controls"}), { description = "play next", group = "media controls" }),
awful.key( {}, "#112", function () awful.spawn.with_shell("playerctl previous") end, awful.key({}, "#112", function() awful.spawn.with_shell("playerctl previous") end,
{description="play previous", group="media controls"}), { description = "play previous", group = "media controls" }),
--awful.key( {}, "#123", function () volume_widget:inc(5) end ), -- increase volume --awful.key( {}, "#123", function () volume_widget:inc(5) end ), -- increase volume
--awful.key( {}, "#122", function () volume_widget:dec(5) end ), -- decrease volume --awful.key( {}, "#122", function () volume_widget:dec(5) end ), -- decrease volume
--awful.key( {}, "#121", function () volume_widget:toggle() end ), -- mute --awful.key( {}, "#121", function () volume_widget:toggle() end ), -- mute
awful.key( {}, "#123", function () awful.spawn.with_shell("pulsemixer --change-volume +5") end ), -- increase volume awful.key({}, "#123", function() awful.spawn.with_shell("pulsemixer --change-volume +5") end), -- increase volume
awful.key( {}, "#122", function () awful.spawn.with_shell("pulsemixer --change-volume -5") end ), -- decrease volume awful.key({}, "#122", function() awful.spawn.with_shell("pulsemixer --change-volume -5") end), -- decrease volume
awful.key( {}, "#121", function () awful.spawn.with_shell("pulsemixer --toggle-mute") end ), -- mute awful.key({}, "#121", function() awful.spawn.with_shell("pulsemixer --toggle-mute") end), -- mute
awful.key( {}, "#171", function () awful.spawn.with_shell("playerctl next") end ), -- play next awful.key({}, "#171", function() awful.spawn.with_shell("playerctl next") end), -- play next
awful.key( {}, "#173", function () awful.spawn.with_shell("playerctl previous") end ), -- play previous awful.key({}, "#173", function() awful.spawn.with_shell("playerctl previous") end), -- play previous
awful.key( {}, "#174", function () awful.spawn.with_shell("playerctl -a stop") end ), -- stop awful.key({}, "#174", function() awful.spawn.with_shell("playerctl -a stop") end), -- stop
awful.key( {}, "#172", function () awful.spawn.with_shell("playerctl -a play-pause") end ), -- play/pause awful.key({}, "#172", function() awful.spawn.with_shell("playerctl -a play-pause") end), -- play/pause
awful.key( { "Control" }, "#107", function () awful.spawn.with_shell("flameshot gui") end, awful.key({ "Control" }, "#107", function() awful.spawn.with_shell("flameshot gui") end,
{description="take region screenshot", group="launcher"}), -- take region screenshot { description = "take region screenshot", group = "launcher" }), -- take region screenshot
awful.key({ modkey, }, "s", hotkeys_popup.show_help, awful.key({ modkey, }, "s", hotkeys_popup.show_help,
{description="show help", group="awesome"}), { description = "show help", group = "awesome" }),
awful.key({ modkey, }, "Left", awful.tag.viewprev, awful.key({ modkey, }, "Left", awful.tag.viewprev,
{description = "view previous", group = "tag"}), { description = "view previous", group = "tag" }),
awful.key({ modkey, }, "Right", awful.tag.viewnext, awful.key({ modkey, }, "Right", awful.tag.viewnext,
{description = "view next", group = "tag"}), { description = "view next", group = "tag" }),
awful.key({ modkey, }, "Escape", awful.tag.history.restore, awful.key({ modkey, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}), { description = "go back", group = "tag" }),
awful.key({ modkey, }, "j", awful.key({ modkey, }, "j",
function () function()
awful.client.focus.byidx( 1) awful.client.focus.byidx(1)
end, end,
{description = "focus next by index", group = "client"} { description = "focus next by index", group = "client" }
), ),
awful.key({ modkey, }, "k", awful.key({ modkey, }, "k",
function () function()
awful.client.focus.byidx(-1) awful.client.focus.byidx(-1)
end, end,
{description = "focus previous by index", group = "client"} { description = "focus previous by index", group = "client" }
), ),
awful.key({ modkey, }, "w", function () mymainmenu:show() end, awful.key({ modkey, }, "w", function() mymainmenu:show() end,
{description = "show main menu", group = "awesome"}), { description = "show main menu", group = "awesome" }),
-- Layout manipulation -- Layout manipulation
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, awful.key({ modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end,
{description = "swap with next client by index", group = "client"}), { description = "swap with next client by index", group = "client" }),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end, awful.key({ modkey, "Shift" }, "k", function() awful.client.swap.byidx(-1) end,
{description = "swap with previous client by index", group = "client"}), { description = "swap with previous client by index", group = "client" }),
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end, awful.key({ modkey, "Control" }, "j", function() awful.screen.focus_relative(1) end,
{description = "focus the next screen", group = "screen"}), { description = "focus the next screen", group = "screen" }),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end, awful.key({ modkey, "Control" }, "k", function() awful.screen.focus_relative(-1) end,
{description = "focus the previous screen", group = "screen"}), { description = "focus the previous screen", group = "screen" }),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto, awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
{description = "jump to urgent client", group = "client"}), { description = "jump to urgent client", group = "client" }),
awful.key({ modkey, }, "Tab", awful.key({ modkey, }, "Tab",
function () function()
awful.client.focus.history.previous() awful.client.focus.history.previous()
if client.focus then if client.focus then
client.focus:raise() client.focus:raise()
end end
end, end,
{description = "go back", group = "client"}), { description = "go back", group = "client" }),
-- Standard program -- Standard program
awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, awful.key({ modkey, }, "Return", function() awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}), { description = "open a terminal", group = "launcher" }),
awful.key({ modkey, "Control" }, "r", awesome.restart, awful.key({ modkey, "Control" }, "r", awesome.restart,
{description = "reload awesome", group = "awesome"}), { description = "reload awesome", group = "awesome" }),
-- awful.key({ modkey, "Control" }, "q", awesome.quit, -- awful.key({ modkey, "Control" }, "q", awesome.quit,
-- {description = "quit awesome", group = "awesome"}), -- {description = "quit awesome", group = "awesome"}),
awful.key({ modkey, }, "v", function () awful.spawn("vivaldi-stable") end, awful.key({ modkey, }, "v", function() awful.spawn("vivaldi-stable") end,
{description = "open vivaldi", group = "launcher"}), { description = "open vivaldi", group = "launcher" }),
awful.key({ modkey, }, "n", function () awful.spawn("spacefm") end, awful.key({ modkey, }, "n", function() awful.spawn("spacefm") end,
{description = "open spacefm", group = "launcher"}), { description = "open spacefm", group = "launcher" }),
awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end, awful.key({ modkey, }, "l", function() awful.tag.incmwfact(0.05) end,
{description = "increase master width factor", group = "layout"}), { description = "increase master width factor", group = "layout" }),
awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end, awful.key({ modkey, }, "h", function() awful.tag.incmwfact(-0.05) end,
{description = "decrease master width factor", group = "layout"}), { description = "decrease master width factor", group = "layout" }),
awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end, awful.key({ modkey, "Shift" }, "h", function() awful.tag.incnmaster(1, nil, true) end,
{description = "increase the number of master clients", group = "layout"}), { description = "increase the number of master clients", group = "layout" }),
awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end, awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster(-1, nil, true) end,
{description = "decrease the number of master clients", group = "layout"}), { description = "decrease the number of master clients", group = "layout" }),
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end, awful.key({ modkey, "Control" }, "h", function() awful.tag.incncol(1, nil, true) end,
{description = "increase the number of columns", group = "layout"}), { description = "increase the number of columns", group = "layout" }),
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end, awful.key({ modkey, "Control" }, "l", function() awful.tag.incncol(-1, nil, true) end,
{description = "decrease the number of columns", group = "layout"}), { description = "decrease the number of columns", group = "layout" }),
awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end, awful.key({ modkey, }, "space", function() awful.layout.inc(1) end,
{description = "select next", group = "layout"}), { description = "select next", group = "layout" }),
awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end, awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc(-1) end,
{description = "select previous", group = "layout"}), { description = "select previous", group = "layout" }),
-- Prompt -- Prompt
awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, awful.key({ modkey }, "r", function() awful.screen.focused().mypromptbox:run() end,
{description = "run prompt", group = "launcher"}), { description = "run prompt", group = "launcher" }),
awful.key({ modkey }, "x", awful.key({ modkey }, "x",
function () function()
awful.prompt.run { awful.prompt.run {
prompt = "Run Lua code: ", prompt = "Run Lua code: ",
textbox = awful.screen.focused().mypromptbox.widget, textbox = awful.screen.focused().mypromptbox.widget,
@ -383,54 +382,54 @@ globalkeys = gears.table.join(
history_path = awful.util.get_cache_dir() .. "/history_eval" history_path = awful.util.get_cache_dir() .. "/history_eval"
} }
end, end,
{description = "lua execute prompt", group = "awesome"}), { description = "lua execute prompt", group = "awesome" }),
-- Menubar -- Menubar
awful.key({ modkey }, "p", function() menubar.show() end, awful.key({ modkey }, "p", function() menubar.show() end,
{description = "show the menubar", group = "launcher"}) { description = "show the menubar", group = "launcher" })
) )
clientkeys = gears.table.join( clientkeys = gears.table.join(
awful.key({ modkey, }, "f", awful.key({ modkey, }, "f",
function (c) function(c)
c.fullscreen = not c.fullscreen c.fullscreen = not c.fullscreen
c:raise() c:raise()
end, end,
{description = "toggle fullscreen", group = "client"}), { description = "toggle fullscreen", group = "client" }),
awful.key({ modkey, "Shift" }, "q", function (c) c:kill() end, awful.key({ modkey, "Shift" }, "q", function(c) c:kill() end,
{description = "close", group = "client"}), { description = "close", group = "client" }),
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle , awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle,
{description = "toggle floating", group = "client"}), { description = "toggle floating", group = "client" }),
awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end, awful.key({ modkey, "Control" }, "Return", function(c) c:swap(awful.client.getmaster()) end,
{description = "move to master", group = "client"}), { description = "move to master", group = "client" }),
awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, awful.key({ modkey, }, "o", function(c) c:move_to_screen() end,
{description = "move to screen", group = "client"}), { description = "move to screen", group = "client" }),
awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end, awful.key({ modkey, }, "t", function(c) c.ontop = not c.ontop end,
{description = "toggle keep on top", group = "client"}), { description = "toggle keep on top", group = "client" }),
awful.key({ modkey, }, "n", awful.key({ modkey, }, "n",
function (c) function(c)
-- The client currently has the input focus, so it cannot be -- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus. -- minimized, since minimized clients can't have the focus.
c.minimized = true c.minimized = true
end , end,
{description = "minimize", group = "client"}), { description = "minimize", group = "client" }),
awful.key({ modkey, }, "m", awful.key({ modkey, }, "m",
function (c) function(c)
c.maximized = not c.maximized c.maximized = not c.maximized
c:raise() c:raise()
end , end,
{description = "(un)maximize", group = "client"}), { description = "(un)maximize", group = "client" }),
awful.key({ modkey, "Control" }, "m", awful.key({ modkey, "Control" }, "m",
function (c) function(c)
c.maximized_vertical = not c.maximized_vertical c.maximized_vertical = not c.maximized_vertical
c:raise() c:raise()
end , end,
{description = "(un)maximize vertically", group = "client"}), { description = "(un)maximize vertically", group = "client" }),
awful.key({ modkey, "Shift" }, "m", awful.key({ modkey, "Shift" }, "m",
function (c) function(c)
c.maximized_horizontal = not c.maximized_horizontal c.maximized_horizontal = not c.maximized_horizontal
c:raise() c:raise()
end , end,
{description = "(un)maximize horizontally", group = "client"}) { description = "(un)maximize horizontally", group = "client" })
) )
-- Bind all key numbers to tags. -- Bind all key numbers to tags.
@ -440,27 +439,27 @@ for i = 1, 9 do
globalkeys = gears.table.join(globalkeys, globalkeys = gears.table.join(globalkeys,
-- View tag only. -- View tag only.
awful.key({ modkey }, "#" .. i + 9, awful.key({ modkey }, "#" .. i + 9,
function () function()
local screen = awful.screen.focused() local screen = awful.screen.focused()
local tag = screen.tags[i] local tag = screen.tags[i]
if tag then if tag then
tag:view_only() tag:view_only()
end end
end, end,
{description = "view tag #"..i, group = "tag"}), { description = "view tag #" .. i, group = "tag" }),
-- Toggle tag display. -- Toggle tag display.
awful.key({ modkey, "Control" }, "#" .. i + 9, awful.key({ modkey, "Control" }, "#" .. i + 9,
function () function()
local screen = awful.screen.focused() local screen = awful.screen.focused()
local tag = screen.tags[i] local tag = screen.tags[i]
if tag then if tag then
awful.tag.viewtoggle(tag) awful.tag.viewtoggle(tag)
end end
end, end,
{description = "toggle tag #" .. i, group = "tag"}), { description = "toggle tag #" .. i, group = "tag" }),
-- Move client to tag. -- Move client to tag.
awful.key({ modkey, "Shift" }, "#" .. i + 9, awful.key({ modkey, "Shift" }, "#" .. i + 9,
function () function()
if client.focus then if client.focus then
local tag = client.focus.screen.tags[i] local tag = client.focus.screen.tags[i]
if tag then if tag then
@ -468,10 +467,10 @@ for i = 1, 9 do
end end
end end
end, end,
{description = "move focused client to tag #"..i, group = "tag"}), { description = "move focused client to tag #" .. i, group = "tag" }),
-- Toggle tag on focused client. -- Toggle tag on focused client.
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
function () function()
if client.focus then if client.focus then
local tag = client.focus.screen.tags[i] local tag = client.focus.screen.tags[i]
if tag then if tag then
@ -479,20 +478,20 @@ for i = 1, 9 do
end end
end end
end, end,
{description = "toggle focused client on tag #" .. i, group = "tag"}) { description = "toggle focused client on tag #" .. i, group = "tag" })
) )
end end
clientbuttons = gears.table.join( clientbuttons = gears.table.join(
awful.button({ }, 1, function (c) awful.button({}, 1, function(c)
c:emit_signal("request::activate", "mouse_click", {raise = true}) c:emit_signal("request::activate", "mouse_click", { raise = true })
end), end),
awful.button({ modkey }, 1, function (c) awful.button({ modkey }, 1, function(c)
c:emit_signal("request::activate", "mouse_click", {raise = true}) c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.move(c) awful.mouse.client.move(c)
end), end),
awful.button({ modkey }, 3, function (c) awful.button({ modkey }, 3, function(c)
c:emit_signal("request::activate", "mouse_click", {raise = true}) c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.resize(c) awful.mouse.client.resize(c)
end) end)
) )
@ -505,7 +504,7 @@ root.keys(globalkeys)
-- Rules to apply to new clients (through the "manage" signal). -- Rules to apply to new clients (through the "manage" signal).
awful.rules.rules = { awful.rules.rules = {
-- All clients will match this rule. -- All clients will match this rule.
{ rule = { }, { rule = {},
properties = { border_width = beautiful.border_width, properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal, border_color = beautiful.border_normal,
focus = awful.client.focus.filter, focus = awful.client.focus.filter,
@ -534,7 +533,7 @@ awful.rules.rules = {
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size. "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
"Wpa_gui", "Wpa_gui",
"veromix", "veromix",
"xtightvncviewer"}, "xtightvncviewer" },
-- Note that the name property shown in xprop might be set slightly after creation of the client -- Note that the name property shown in xprop might be set slightly after creation of the client
-- and the name shown there might not match defined rules here. -- and the name shown there might not match defined rules here.
@ -546,10 +545,10 @@ awful.rules.rules = {
"ConfigManager", -- Thunderbird's about:config. "ConfigManager", -- Thunderbird's about:config.
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools. "pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
} }
}, properties = { floating = true, beautiful.useless }}, }, properties = { floating = true, beautiful.useless } },
-- Add titlebars to normal clients and dialogs -- Add titlebars to normal clients and dialogs
{ rule_any = {type = { "normal", "dialog" } { rule_any = { type = { "normal", "dialog" }
}, properties = { titlebars_enabled = false } }, properties = { titlebars_enabled = false }
}, },
@ -576,7 +575,7 @@ awful.rules.rules = {
-- {{{ Signals -- {{{ Signals
-- Signal function to execute when a new client appears. -- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c) client.connect_signal("manage", function(c)
-- Set the windows at the slave, -- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master. -- i.e. put it at the end of others instead of setting it master.
-- if not awesome.startup then awful.client.setslave(c) end -- if not awesome.startup then awful.client.setslave(c) end
@ -593,17 +592,17 @@ end)
client.connect_signal("request::titlebars", function(c) client.connect_signal("request::titlebars", function(c)
-- buttons for the titlebar -- buttons for the titlebar
local buttons = gears.table.join( local buttons = gears.table.join(
awful.button({ }, 1, function() awful.button({}, 1, function()
c:emit_signal("request::activate", "titlebar", {raise = true}) c:emit_signal("request::activate", "titlebar", { raise = true })
awful.mouse.client.move(c) awful.mouse.client.move(c)
end), end),
awful.button({ }, 3, function() awful.button({}, 3, function()
c:emit_signal("request::activate", "titlebar", {raise = true}) c:emit_signal("request::activate", "titlebar", { raise = true })
awful.mouse.client.resize(c) awful.mouse.client.resize(c)
end) end)
) )
awful.titlebar(c) : setup { awful.titlebar(c):setup {
{ -- Left { -- Left
awful.titlebar.widget.iconwidget(c), awful.titlebar.widget.iconwidget(c),
buttons = buttons, buttons = buttons,
@ -618,11 +617,11 @@ client.connect_signal("request::titlebars", function(c)
layout = wibox.layout.flex.horizontal layout = wibox.layout.flex.horizontal
}, },
{ -- Right { -- Right
awful.titlebar.widget.floatingbutton (c), awful.titlebar.widget.floatingbutton(c),
awful.titlebar.widget.maximizedbutton(c), awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.stickybutton (c), awful.titlebar.widget.stickybutton(c),
awful.titlebar.widget.ontopbutton (c), awful.titlebar.widget.ontopbutton(c),
awful.titlebar.widget.closebutton (c), awful.titlebar.widget.closebutton(c),
layout = wibox.layout.fixed.horizontal() layout = wibox.layout.fixed.horizontal()
}, },
layout = wibox.layout.align.horizontal layout = wibox.layout.align.horizontal
@ -631,7 +630,7 @@ end)
-- Enable sloppy focus, so that focus follows mouse. -- Enable sloppy focus, so that focus follows mouse.
client.connect_signal("mouse::enter", function(c) client.connect_signal("mouse::enter", function(c)
c:emit_signal("request::activate", "mouse_enter", {raise = false}) c:emit_signal("request::activate", "mouse_enter", { raise = false })
end) end)
client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
@ -643,4 +642,3 @@ client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_n
-- Autostart Applications -- Autostart Applications
awful.spawn.with_shell("picom --experimental-backends") awful.spawn.with_shell("picom --experimental-backends")
awful.spawn.with_shell("setxkbmap lv") awful.spawn.with_shell("setxkbmap lv")

View File

@ -31,16 +31,16 @@ local json = { _version = "0.1.2" }
local encode local encode
local escape_char_map = { local escape_char_map = {
[ "\\" ] = "\\", ["\\"] = "\\",
[ "\"" ] = "\"", ["\""] = "\"",
[ "\b" ] = "b", ["\b"] = "b",
[ "\f" ] = "f", ["\f"] = "f",
[ "\n" ] = "n", ["\n"] = "n",
[ "\r" ] = "r", ["\r"] = "r",
[ "\t" ] = "t", ["\t"] = "t",
} }
local escape_char_map_inv = { [ "/" ] = "/" } local escape_char_map_inv = { ["/"] = "/" }
for k, v in pairs(escape_char_map) do for k, v in pairs(escape_char_map) do
escape_char_map_inv[v] = k escape_char_map_inv[v] = k
end end
@ -50,12 +50,10 @@ local function escape_char(c)
return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte())) return "\\" .. (escape_char_map[c] or string.format("u%04x", c:byte()))
end end
local function encode_nil(val) local function encode_nil(val)
return "null" return "null"
end end
local function encode_table(val, stack) local function encode_table(val, stack)
local res = {} local res = {}
stack = stack or {} stack = stack or {}
@ -97,12 +95,10 @@ local function encode_table(val, stack)
end end
end end
local function encode_string(val) local function encode_string(val)
return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"' return '"' .. val:gsub('[%z\1-\31\\"]', escape_char) .. '"'
end end
local function encode_number(val) local function encode_number(val)
-- Check for NaN, -inf and inf -- Check for NaN, -inf and inf
if val ~= val or val <= -math.huge or val >= math.huge then if val ~= val or val <= -math.huge or val >= math.huge then
@ -111,13 +107,12 @@ local function encode_number(val)
return string.format("%.14g", val) return string.format("%.14g", val)
end end
local type_func_map = { local type_func_map = {
[ "nil" ] = encode_nil, ["nil"] = encode_nil,
[ "table" ] = encode_table, ["table"] = encode_table,
[ "string" ] = encode_string, ["string"] = encode_string,
[ "number" ] = encode_number, ["number"] = encode_number,
[ "boolean" ] = tostring, ["boolean"] = tostring,
} }
@ -132,10 +127,9 @@ end
function json.encode(val) function json.encode(val)
return ( encode(val) ) return (encode(val))
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
-- Decode -- Decode
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
@ -145,7 +139,7 @@ local parse
local function create_set(...) local function create_set(...)
local res = {} local res = {}
for i = 1, select("#", ...) do for i = 1, select("#", ...) do
res[ select(i, ...) ] = true res[select(i, ...)] = true
end end
return res return res
end end
@ -156,9 +150,9 @@ local escape_chars = create_set("\\", "/", '"', "b", "f", "n", "r", "t", "u")
local literals = create_set("true", "false", "null") local literals = create_set("true", "false", "null")
local literal_map = { local literal_map = {
[ "true" ] = true, ["true"] = true,
[ "false" ] = false, ["false"] = false,
[ "null" ] = nil, ["null"] = nil,
} }
@ -171,7 +165,6 @@ local function next_char(str, idx, set, negate)
return #str + 1 return #str + 1
end end
local function decode_error(str, idx, msg) local function decode_error(str, idx, msg)
local line_count = 1 local line_count = 1
local col_count = 1 local col_count = 1
@ -182,10 +175,9 @@ local function decode_error(str, idx, msg)
col_count = 1 col_count = 1
end end
end end
error( string.format("%s at line %d col %d", msg, line_count, col_count) ) error(string.format("%s at line %d col %d", msg, line_count, col_count))
end end
local function codepoint_to_utf8(n) local function codepoint_to_utf8(n)
-- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa -- http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=iws-appendixa
local f = math.floor local f = math.floor
@ -199,13 +191,12 @@ local function codepoint_to_utf8(n)
return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128, return string.char(f(n / 262144) + 240, f(n % 262144 / 4096) + 128,
f(n % 4096 / 64) + 128, n % 64 + 128) f(n % 4096 / 64) + 128, n % 64 + 128)
end end
error( string.format("invalid unicode codepoint '%x'", n) ) error(string.format("invalid unicode codepoint '%x'", n))
end end
local function parse_unicode_escape(s) local function parse_unicode_escape(s)
local n1 = tonumber( s:sub(1, 4), 16 ) local n1 = tonumber(s:sub(1, 4), 16)
local n2 = tonumber( s:sub(7, 10), 16 ) local n2 = tonumber(s:sub(7, 10), 16)
-- Surrogate pair? -- Surrogate pair?
if n2 then if n2 then
return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000) return codepoint_to_utf8((n1 - 0xd800) * 0x400 + (n2 - 0xdc00) + 0x10000)
@ -214,7 +205,6 @@ local function parse_unicode_escape(s)
end end
end end
local function parse_string(str, i) local function parse_string(str, i)
local res = "" local res = ""
local j = i + 1 local j = i + 1
@ -255,7 +245,6 @@ local function parse_string(str, i)
decode_error(str, i, "expected closing quote for string") decode_error(str, i, "expected closing quote for string")
end end
local function parse_number(str, i) local function parse_number(str, i)
local x = next_char(str, i, delim_chars) local x = next_char(str, i, delim_chars)
local s = str:sub(i, x - 1) local s = str:sub(i, x - 1)
@ -266,7 +255,6 @@ local function parse_number(str, i)
return n, x return n, x
end end
local function parse_literal(str, i) local function parse_literal(str, i)
local x = next_char(str, i, delim_chars) local x = next_char(str, i, delim_chars)
local word = str:sub(i, x - 1) local word = str:sub(i, x - 1)
@ -276,7 +264,6 @@ local function parse_literal(str, i)
return literal_map[word], x return literal_map[word], x
end end
local function parse_array(str, i) local function parse_array(str, i)
local res = {} local res = {}
local n = 1 local n = 1
@ -303,7 +290,6 @@ local function parse_array(str, i)
return res, i return res, i
end end
local function parse_object(str, i) local function parse_object(str, i)
local res = {} local res = {}
i = i + 1 i = i + 1
@ -340,25 +326,24 @@ local function parse_object(str, i)
return res, i return res, i
end end
local char_func_map = { local char_func_map = {
[ '"' ] = parse_string, ['"'] = parse_string,
[ "0" ] = parse_number, ["0"] = parse_number,
[ "1" ] = parse_number, ["1"] = parse_number,
[ "2" ] = parse_number, ["2"] = parse_number,
[ "3" ] = parse_number, ["3"] = parse_number,
[ "4" ] = parse_number, ["4"] = parse_number,
[ "5" ] = parse_number, ["5"] = parse_number,
[ "6" ] = parse_number, ["6"] = parse_number,
[ "7" ] = parse_number, ["7"] = parse_number,
[ "8" ] = parse_number, ["8"] = parse_number,
[ "9" ] = parse_number, ["9"] = parse_number,
[ "-" ] = parse_number, ["-"] = parse_number,
[ "t" ] = parse_literal, ["t"] = parse_literal,
[ "f" ] = parse_literal, ["f"] = parse_literal,
[ "n" ] = parse_literal, ["n"] = parse_literal,
[ "[" ] = parse_array, ["["] = parse_array,
[ "{" ] = parse_object, ["{"] = parse_object,
} }
@ -384,5 +369,4 @@ function json.decode(str)
return res return res
end end
return json return json

View File

@ -62,7 +62,7 @@ theme.taglist_squares_unsel = theme_assets.taglist_squares_unsel(
-- Variables set for theming the menu: -- Variables set for theming the menu:
-- menu_[bg|fg]_[normal|focus] -- menu_[bg|fg]_[normal|focus]
-- menu_[border_color|border_width] -- menu_[border_color|border_width]
theme.menu_submenu_icon = themes_path.."default/submenu.png" theme.menu_submenu_icon = themes_path .. "default/submenu.png"
theme.menu_height = dpi(16) theme.menu_height = dpi(16)
theme.menu_width = dpi(100) theme.menu_width = dpi(100)
@ -72,51 +72,51 @@ theme.menu_width = dpi(100)
--theme.bg_widget = "#cc0000" --theme.bg_widget = "#cc0000"
-- Define the image to load -- Define the image to load
theme.titlebar_close_button_normal = themes_path.."default/titlebar/close_normal.png" theme.titlebar_close_button_normal = themes_path .. "default/titlebar/close_normal.png"
theme.titlebar_close_button_focus = themes_path.."default/titlebar/close_focus.png" theme.titlebar_close_button_focus = themes_path .. "default/titlebar/close_focus.png"
theme.titlebar_minimize_button_normal = themes_path.."default/titlebar/minimize_normal.png" theme.titlebar_minimize_button_normal = themes_path .. "default/titlebar/minimize_normal.png"
theme.titlebar_minimize_button_focus = themes_path.."default/titlebar/minimize_focus.png" theme.titlebar_minimize_button_focus = themes_path .. "default/titlebar/minimize_focus.png"
theme.titlebar_ontop_button_normal_inactive = themes_path.."default/titlebar/ontop_normal_inactive.png" theme.titlebar_ontop_button_normal_inactive = themes_path .. "default/titlebar/ontop_normal_inactive.png"
theme.titlebar_ontop_button_focus_inactive = themes_path.."default/titlebar/ontop_focus_inactive.png" theme.titlebar_ontop_button_focus_inactive = themes_path .. "default/titlebar/ontop_focus_inactive.png"
theme.titlebar_ontop_button_normal_active = themes_path.."default/titlebar/ontop_normal_active.png" theme.titlebar_ontop_button_normal_active = themes_path .. "default/titlebar/ontop_normal_active.png"
theme.titlebar_ontop_button_focus_active = themes_path.."default/titlebar/ontop_focus_active.png" theme.titlebar_ontop_button_focus_active = themes_path .. "default/titlebar/ontop_focus_active.png"
theme.titlebar_sticky_button_normal_inactive = themes_path.."default/titlebar/sticky_normal_inactive.png" theme.titlebar_sticky_button_normal_inactive = themes_path .. "default/titlebar/sticky_normal_inactive.png"
theme.titlebar_sticky_button_focus_inactive = themes_path.."default/titlebar/sticky_focus_inactive.png" theme.titlebar_sticky_button_focus_inactive = themes_path .. "default/titlebar/sticky_focus_inactive.png"
theme.titlebar_sticky_button_normal_active = themes_path.."default/titlebar/sticky_normal_active.png" theme.titlebar_sticky_button_normal_active = themes_path .. "default/titlebar/sticky_normal_active.png"
theme.titlebar_sticky_button_focus_active = themes_path.."default/titlebar/sticky_focus_active.png" theme.titlebar_sticky_button_focus_active = themes_path .. "default/titlebar/sticky_focus_active.png"
theme.titlebar_floating_button_normal_inactive = themes_path.."default/titlebar/floating_normal_inactive.png" theme.titlebar_floating_button_normal_inactive = themes_path .. "default/titlebar/floating_normal_inactive.png"
theme.titlebar_floating_button_focus_inactive = themes_path.."default/titlebar/floating_focus_inactive.png" theme.titlebar_floating_button_focus_inactive = themes_path .. "default/titlebar/floating_focus_inactive.png"
theme.titlebar_floating_button_normal_active = themes_path.."default/titlebar/floating_normal_active.png" theme.titlebar_floating_button_normal_active = themes_path .. "default/titlebar/floating_normal_active.png"
theme.titlebar_floating_button_focus_active = themes_path.."default/titlebar/floating_focus_active.png" theme.titlebar_floating_button_focus_active = themes_path .. "default/titlebar/floating_focus_active.png"
theme.titlebar_maximized_button_normal_inactive = themes_path.."default/titlebar/maximized_normal_inactive.png" theme.titlebar_maximized_button_normal_inactive = themes_path .. "default/titlebar/maximized_normal_inactive.png"
theme.titlebar_maximized_button_focus_inactive = themes_path.."default/titlebar/maximized_focus_inactive.png" theme.titlebar_maximized_button_focus_inactive = themes_path .. "default/titlebar/maximized_focus_inactive.png"
theme.titlebar_maximized_button_normal_active = themes_path.."default/titlebar/maximized_normal_active.png" theme.titlebar_maximized_button_normal_active = themes_path .. "default/titlebar/maximized_normal_active.png"
theme.titlebar_maximized_button_focus_active = themes_path.."default/titlebar/maximized_focus_active.png" theme.titlebar_maximized_button_focus_active = themes_path .. "default/titlebar/maximized_focus_active.png"
theme.wallpaper = "~/.local/share/wallpaper.png" theme.wallpaper = "~/.local/share/wallpaper.png"
-- You can use your own layout icons like this: -- You can use your own layout icons like this:
theme.layout_fairh = themes_path.."default/layouts/fairhw.png" theme.layout_fairh = themes_path .. "default/layouts/fairhw.png"
theme.layout_fairv = themes_path.."default/layouts/fairvw.png" theme.layout_fairv = themes_path .. "default/layouts/fairvw.png"
theme.layout_floating = themes_path.."default/layouts/floatingw.png" theme.layout_floating = themes_path .. "default/layouts/floatingw.png"
theme.layout_magnifier = themes_path.."default/layouts/magnifierw.png" theme.layout_magnifier = themes_path .. "default/layouts/magnifierw.png"
theme.layout_max = themes_path.."default/layouts/maxw.png" theme.layout_max = themes_path .. "default/layouts/maxw.png"
theme.layout_fullscreen = themes_path.."default/layouts/fullscreenw.png" theme.layout_fullscreen = themes_path .. "default/layouts/fullscreenw.png"
theme.layout_tilebottom = themes_path.."default/layouts/tilebottomw.png" theme.layout_tilebottom = themes_path .. "default/layouts/tilebottomw.png"
theme.layout_tileleft = themes_path.."default/layouts/tileleftw.png" theme.layout_tileleft = themes_path .. "default/layouts/tileleftw.png"
theme.layout_tile = themes_path.."default/layouts/tilew.png" theme.layout_tile = themes_path .. "default/layouts/tilew.png"
theme.layout_tiletop = themes_path.."default/layouts/tiletopw.png" theme.layout_tiletop = themes_path .. "default/layouts/tiletopw.png"
theme.layout_spiral = themes_path.."default/layouts/spiralw.png" theme.layout_spiral = themes_path .. "default/layouts/spiralw.png"
theme.layout_dwindle = themes_path.."default/layouts/dwindlew.png" theme.layout_dwindle = themes_path .. "default/layouts/dwindlew.png"
theme.layout_cornernw = themes_path.."default/layouts/cornernww.png" theme.layout_cornernw = themes_path .. "default/layouts/cornernww.png"
theme.layout_cornerne = themes_path.."default/layouts/cornernew.png" theme.layout_cornerne = themes_path .. "default/layouts/cornernew.png"
theme.layout_cornersw = themes_path.."default/layouts/cornersww.png" theme.layout_cornersw = themes_path .. "default/layouts/cornersww.png"
theme.layout_cornerse = themes_path.."default/layouts/cornersew.png" theme.layout_cornerse = themes_path .. "default/layouts/cornersew.png"
-- Generate Awesome icon: -- Generate Awesome icon:
theme.awesome_icon = theme_assets.awesome_icon( theme.awesome_icon = theme_assets.awesome_icon(

View File

@ -1,4 +1,3 @@
-- If LuaRocks is installed, make sure that packages installed through it are -- If LuaRocks is installed, make sure that packages installed through it are
-- found (e.g. lgi). If LuaRocks is not installed, do nothing. -- found (e.g. lgi). If LuaRocks is not installed, do nothing.
pcall(require, "luarocks.loader") pcall(require, "luarocks.loader")
@ -44,7 +43,7 @@ end
-- Handle runtime errors after startup -- Handle runtime errors after startup
do do
local in_error = false local in_error = false
awesome.connect_signal("debug::error", function (err) awesome.connect_signal("debug::error", function(err)
-- Make sure we don't go into an endless error loop -- Make sure we don't go into an endless error loop
if in_error then return end if in_error then return end
in_error = true in_error = true
@ -107,8 +106,8 @@ myawesomemenu = {
mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon }, mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
{ "open terminal", terminal } { "open terminal", terminal }
} }
}) })
mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon, mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
menu = mymainmenu }) menu = mymainmenu })
@ -137,41 +136,41 @@ mytextclock:connect_signal("button::press",
-- Create a wibox for each screen and add it -- Create a wibox for each screen and add it
local taglist_buttons = gears.table.join( local taglist_buttons = gears.table.join(
awful.button({ }, 1, function(t) t:view_only() end), awful.button({}, 1, function(t) t:view_only() end),
awful.button({ modkey }, 1, function(t) awful.button({ modkey }, 1, function(t)
if client.focus then if client.focus then
client.focus:move_to_tag(t) client.focus:move_to_tag(t)
end end
end), end),
awful.button({ }, 3, awful.tag.viewtoggle), awful.button({}, 3, awful.tag.viewtoggle),
awful.button({ modkey }, 3, function(t) awful.button({ modkey }, 3, function(t)
if client.focus then if client.focus then
client.focus:toggle_tag(t) client.focus:toggle_tag(t)
end end
end), end),
awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end), awful.button({}, 4, function(t) awful.tag.viewnext(t.screen) end),
awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end) awful.button({}, 5, function(t) awful.tag.viewprev(t.screen) end)
) )
local tasklist_buttons = gears.table.join( local tasklist_buttons = gears.table.join(
awful.button({ }, 1, function (c) awful.button({}, 1, function(c)
if c == client.focus then if c == client.focus then
c.minimized = true c.minimized = true
else else
c:emit_signal( c:emit_signal(
"request::activate", "request::activate",
"tasklist", "tasklist",
{raise = true} { raise = true }
) )
end end
end), end),
awful.button({ }, 3, function() awful.button({}, 3, function()
awful.menu.client_list({ theme = { width = 250 } }) awful.menu.client_list({ theme = { width = 250 } })
end), end),
awful.button({ }, 4, function () awful.button({}, 4, function()
awful.client.focus.byidx(1) awful.client.focus.byidx(1)
end), end),
awful.button({ }, 5, function () awful.button({}, 5, function()
awful.client.focus.byidx(-1) awful.client.focus.byidx(-1)
end)) end))
@ -203,10 +202,10 @@ awful.screen.connect_for_each_screen(function(s)
-- We need one layoutbox per screen. -- We need one layoutbox per screen.
s.mylayoutbox = awful.widget.layoutbox(s) s.mylayoutbox = awful.widget.layoutbox(s)
s.mylayoutbox:buttons(gears.table.join( s.mylayoutbox:buttons(gears.table.join(
awful.button({ }, 1, function () awful.layout.inc( 1) end), awful.button({}, 1, function() awful.layout.inc(1) end),
awful.button({ }, 3, function () awful.layout.inc(-1) end), awful.button({}, 3, function() awful.layout.inc(-1) end),
awful.button({ }, 4, function () awful.layout.inc( 1) end), awful.button({}, 4, function() awful.layout.inc(1) end),
awful.button({ }, 5, function () awful.layout.inc(-1) end))) awful.button({}, 5, function() awful.layout.inc(-1) end)))
-- Create a taglist widget -- Create a taglist widget
s.mytaglist = awful.widget.taglist { s.mytaglist = awful.widget.taglist {
screen = s, screen = s,
@ -249,7 +248,7 @@ awful.screen.connect_for_each_screen(function(s)
show_current_level = true, show_current_level = true,
size = 32, size = 32,
}), }),
brightness_widget{ brightness_widget {
program = 'brightnessctl', program = 'brightnessctl',
step = 5, step = 5,
base = 60, base = 60,
@ -257,7 +256,7 @@ awful.screen.connect_for_each_screen(function(s)
}, },
weather_widget({ weather_widget({
api_key = '3bc28ba1ee6eeaf28af31d9d948aecd1', api_key = '3bc28ba1ee6eeaf28af31d9d948aecd1',
coordinates = {56.86140361300421, 24.386173343039193}, coordinates = { 56.86140361300421, 24.386173343039193 },
show_hourly_forecst = true, show_hourly_forecst = true,
show_daily_forecast = true, show_daily_forecast = true,
}), }),
@ -271,90 +270,91 @@ end)
-- {{{ Mouse bindings -- {{{ Mouse bindings
root.buttons(gears.table.join( root.buttons(gears.table.join(
awful.button({ }, 3, function () mymainmenu:toggle() end), awful.button({}, 3, function() mymainmenu:toggle() end),
awful.button({ }, 4, awful.tag.viewnext), awful.button({}, 4, awful.tag.viewnext),
awful.button({ }, 5, awful.tag.viewprev) awful.button({}, 5, awful.tag.viewprev)
)) ))
-- }}} -- }}}
-- {{{ Key bindings -- {{{ Key bindings
globalkeys = gears.table.join( globalkeys = gears.table.join(
awful.key( {}, "#233", function() brightness_widget:inc() end ), -- increase brightness awful.key({}, "#233", function() brightness_widget:inc() end), -- increase brightness
awful.key( {}, "#232", function() brightness_widget:dec() end ), -- decrease brightness awful.key({}, "#232", function() brightness_widget:dec() end), -- decrease brightness
awful.key( {}, "#123", function () awful.spawn.with_shell("pulsemixer --change-volume +5") end ), -- increase volume awful.key({}, "#123", function() awful.spawn.with_shell("pulsemixer --change-volume +5") end), -- increase volume
awful.key( {}, "#122", function () awful.spawn.with_shell("pulsemixer --change-volume -5") end ), -- decrease volume awful.key({}, "#122", function() awful.spawn.with_shell("pulsemixer --change-volume -5") end), -- decrease volume
awful.key( {}, "#121", function () awful.spawn.with_shell("pulsemixer --toggle-mute") end ), -- mute awful.key({}, "#121", function() awful.spawn.with_shell("pulsemixer --toggle-mute") end), -- mute
awful.key( {}, "#172", function () awful.spawn.with_shell("playerctl -a play-pause") end ), -- play/pause awful.key({}, "#172", function() awful.spawn.with_shell("playerctl -a play-pause") end), -- play/pause
awful.key( { "Control" }, "#107", function () awful.spawn.with_shell("flameshot gui") end, awful.key({ "Control" }, "#107", function() awful.spawn.with_shell("flameshot gui") end,
{description="take region screenshot", group="launcher"}), -- take region screenshot { description = "take region screenshot", group = "launcher" }), -- take region screenshot
awful.key({ modkey, }, "s", hotkeys_popup.show_help, awful.key({ modkey, }, "s", hotkeys_popup.show_help,
{description="show help", group="awesome"}), { description = "show help", group = "awesome" }),
awful.key({ modkey, }, "Left", awful.tag.viewprev, awful.key({ modkey, }, "Left", awful.tag.viewprev,
{description = "view previous", group = "tag"}), { description = "view previous", group = "tag" }),
awful.key({ modkey, }, "Right", awful.tag.viewnext, awful.key({ modkey, }, "Right", awful.tag.viewnext,
{description = "view next", group = "tag"}), { description = "view next", group = "tag" }),
awful.key({ modkey, }, "Escape", awful.tag.history.restore, awful.key({ modkey, }, "Escape", awful.tag.history.restore,
{description = "go back", group = "tag"}), { description = "go back", group = "tag" }),
awful.key({ modkey, }, "j", function () awful.client.focus.byidx(1) end, awful.key({ modkey, }, "j", function() awful.client.focus.byidx(1) end,
{description = "focus next by index", group = "client"} { description = "focus next by index", group = "client" }
), ),
awful.key({ modkey, }, "k", function () awful.client.focus.byidx(-1) end, awful.key({ modkey, }, "k", function() awful.client.focus.byidx(-1) end,
{description = "focus previous by index", group = "client"} { description = "focus previous by index", group = "client" }
), ),
awful.key({ modkey, }, "w", function () mymainmenu:show() end, awful.key({ modkey, }, "w", function() mymainmenu:show() end,
{description = "show main menu", group = "awesome"}), { description = "show main menu", group = "awesome" }),
-- Layout manipulation -- Layout manipulation
awful.key({ modkey, "Shift" }, "j", function () awful.client.swap.byidx( 1) end, awful.key({ modkey, "Shift" }, "j", function() awful.client.swap.byidx(1) end,
{description = "swap with next client by index", group = "client"}), { description = "swap with next client by index", group = "client" }),
awful.key({ modkey, "Shift" }, "k", function () awful.client.swap.byidx( -1) end, awful.key({ modkey, "Shift" }, "k", function() awful.client.swap.byidx(-1) end,
{description = "swap with previous client by index", group = "client"}), { description = "swap with previous client by index", group = "client" }),
awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end, awful.key({ modkey, "Control" }, "j", function() awful.screen.focus_relative(1) end,
{description = "focus the next screen", group = "screen"}), { description = "focus the next screen", group = "screen" }),
awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end, awful.key({ modkey, "Control" }, "k", function() awful.screen.focus_relative(-1) end,
{description = "focus the previous screen", group = "screen"}), { description = "focus the previous screen", group = "screen" }),
awful.key({ modkey, }, "u", awful.client.urgent.jumpto, awful.key({ modkey, }, "u", awful.client.urgent.jumpto,
{description = "jump to urgent client", group = "client"}), { description = "jump to urgent client", group = "client" }),
awful.key({ modkey, }, "Tab", function () awful.client.focus.history.previous() awful.key({ modkey, }, "Tab", function() awful.client.focus.history.previous()
if client.focus then if client.focus then
client.focus:raise() client.focus:raise()
end end, end
{description = "go back", group = "client"}), end,
{ description = "go back", group = "client" }),
-- Standard program -- Standard program
awful.key({ modkey, }, "Return", function () awful.spawn(terminal) end, awful.key({ modkey, }, "Return", function() awful.spawn(terminal) end,
{description = "open a terminal", group = "launcher"}), { description = "open a terminal", group = "launcher" }),
awful.key({ modkey, "Control" }, "r", awesome.restart, awful.key({ modkey, "Control" }, "r", awesome.restart,
{description = "reload awesome", group = "awesome"}), { description = "reload awesome", group = "awesome" }),
-- awful.key({ modkey, "Control" }, "q", awesome.quit, -- awful.key({ modkey, "Control" }, "q", awesome.quit,
-- {description = "quit awesome", group = "awesome"}), -- {description = "quit awesome", group = "awesome"}),
awful.key({ modkey, }, "v", function () awful.spawn("vivaldi-stable") end, awful.key({ modkey, }, "v", function() awful.spawn("vivaldi-stable") end,
{description = "open vivaldi", group = "launcher"}), { description = "open vivaldi", group = "launcher" }),
awful.key({ modkey, }, "n", function () awful.spawn("spacefm") end, awful.key({ modkey, }, "n", function() awful.spawn("spacefm") end,
{description = "open spacefm", group = "launcher"}), { description = "open spacefm", group = "launcher" }),
awful.key({ modkey, }, "l", function () awful.tag.incmwfact( 0.05) end, awful.key({ modkey, }, "l", function() awful.tag.incmwfact(0.05) end,
{description = "increase master width factor", group = "layout"}), { description = "increase master width factor", group = "layout" }),
awful.key({ modkey, }, "h", function () awful.tag.incmwfact(-0.05) end, awful.key({ modkey, }, "h", function() awful.tag.incmwfact(-0.05) end,
{description = "decrease master width factor", group = "layout"}), { description = "decrease master width factor", group = "layout" }),
awful.key({ modkey, "Shift" }, "h", function () awful.tag.incnmaster( 1, nil, true) end, awful.key({ modkey, "Shift" }, "h", function() awful.tag.incnmaster(1, nil, true) end,
{description = "increase the number of master clients", group = "layout"}), { description = "increase the number of master clients", group = "layout" }),
awful.key({ modkey, "Shift" }, "l", function () awful.tag.incnmaster(-1, nil, true) end, awful.key({ modkey, "Shift" }, "l", function() awful.tag.incnmaster(-1, nil, true) end,
{description = "decrease the number of master clients", group = "layout"}), { description = "decrease the number of master clients", group = "layout" }),
awful.key({ modkey, "Control" }, "h", function () awful.tag.incncol( 1, nil, true) end, awful.key({ modkey, "Control" }, "h", function() awful.tag.incncol(1, nil, true) end,
{description = "increase the number of columns", group = "layout"}), { description = "increase the number of columns", group = "layout" }),
awful.key({ modkey, "Control" }, "l", function () awful.tag.incncol(-1, nil, true) end, awful.key({ modkey, "Control" }, "l", function() awful.tag.incncol(-1, nil, true) end,
{description = "decrease the number of columns", group = "layout"}), { description = "decrease the number of columns", group = "layout" }),
awful.key({ modkey, }, "space", function () awful.layout.inc( 1) end, awful.key({ modkey, }, "space", function() awful.layout.inc(1) end,
{description = "select next", group = "layout"}), { description = "select next", group = "layout" }),
awful.key({ modkey, "Shift" }, "space", function () awful.layout.inc(-1) end, awful.key({ modkey, "Shift" }, "space", function() awful.layout.inc(-1) end,
{description = "select previous", group = "layout"}), { description = "select previous", group = "layout" }),
-- awful.key({ modkey, "Control" }, "n", -- awful.key({ modkey, "Control" }, "n",
-- function () -- function ()
@ -369,11 +369,11 @@ globalkeys = gears.table.join(
-- {description = "restore minimized", group = "client"}), -- {description = "restore minimized", group = "client"}),
-- Prompt -- Prompt
awful.key({ modkey }, "r", function () awful.screen.focused().mypromptbox:run() end, awful.key({ modkey }, "r", function() awful.screen.focused().mypromptbox:run() end,
{description = "run prompt", group = "launcher"}), { description = "run prompt", group = "launcher" }),
awful.key({ modkey }, "x", awful.key({ modkey }, "x",
function () function()
awful.prompt.run { awful.prompt.run {
prompt = "Run Lua code: ", prompt = "Run Lua code: ",
textbox = awful.screen.focused().mypromptbox.widget, textbox = awful.screen.focused().mypromptbox.widget,
@ -381,54 +381,54 @@ globalkeys = gears.table.join(
history_path = awful.util.get_cache_dir() .. "/history_eval" history_path = awful.util.get_cache_dir() .. "/history_eval"
} }
end, end,
{description = "lua execute prompt", group = "awesome"}), { description = "lua execute prompt", group = "awesome" }),
-- Menubar -- Menubar
awful.key({ modkey }, "p", function() menubar.show() end, awful.key({ modkey }, "p", function() menubar.show() end,
{description = "show the menubar", group = "launcher"}) { description = "show the menubar", group = "launcher" })
) )
clientkeys = gears.table.join( clientkeys = gears.table.join(
awful.key({ modkey, }, "f", awful.key({ modkey, }, "f",
function (c) function(c)
c.fullscreen = not c.fullscreen c.fullscreen = not c.fullscreen
c:raise() c:raise()
end, end,
{description = "toggle fullscreen", group = "client"}), { description = "toggle fullscreen", group = "client" }),
awful.key({ modkey, "Shift" }, "q", function (c) c:kill() end, awful.key({ modkey, "Shift" }, "q", function(c) c:kill() end,
{description = "close", group = "client"}), { description = "close", group = "client" }),
awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle , awful.key({ modkey, "Control" }, "space", awful.client.floating.toggle,
{description = "toggle floating", group = "client"}), { description = "toggle floating", group = "client" }),
awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end, awful.key({ modkey, "Control" }, "Return", function(c) c:swap(awful.client.getmaster()) end,
{description = "move to master", group = "client"}), { description = "move to master", group = "client" }),
awful.key({ modkey, }, "o", function (c) c:move_to_screen() end, awful.key({ modkey, }, "o", function(c) c:move_to_screen() end,
{description = "move to screen", group = "client"}), { description = "move to screen", group = "client" }),
awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end, awful.key({ modkey, }, "t", function(c) c.ontop = not c.ontop end,
{description = "toggle keep on top", group = "client"}), { description = "toggle keep on top", group = "client" }),
awful.key({ modkey, }, "n", awful.key({ modkey, }, "n",
function (c) function(c)
-- The client currently has the input focus, so it cannot be -- The client currently has the input focus, so it cannot be
-- minimized, since minimized clients can't have the focus. -- minimized, since minimized clients can't have the focus.
c.minimized = true c.minimized = true
end , end,
{description = "minimize", group = "client"}), { description = "minimize", group = "client" }),
awful.key({ modkey, }, "m", awful.key({ modkey, }, "m",
function (c) function(c)
c.maximized = not c.maximized c.maximized = not c.maximized
c:raise() c:raise()
end , end,
{description = "(un)maximize", group = "client"}), { description = "(un)maximize", group = "client" }),
awful.key({ modkey, "Control" }, "m", awful.key({ modkey, "Control" }, "m",
function (c) function(c)
c.maximized_vertical = not c.maximized_vertical c.maximized_vertical = not c.maximized_vertical
c:raise() c:raise()
end , end,
{description = "(un)maximize vertically", group = "client"}), { description = "(un)maximize vertically", group = "client" }),
awful.key({ modkey, "Shift" }, "m", awful.key({ modkey, "Shift" }, "m",
function (c) function(c)
c.maximized_horizontal = not c.maximized_horizontal c.maximized_horizontal = not c.maximized_horizontal
c:raise() c:raise()
end , end,
{description = "(un)maximize horizontally", group = "client"}) { description = "(un)maximize horizontally", group = "client" })
) )
-- Bind all key numbers to tags. -- Bind all key numbers to tags.
@ -438,27 +438,27 @@ for i = 1, 9 do
globalkeys = gears.table.join(globalkeys, globalkeys = gears.table.join(globalkeys,
-- View tag only. -- View tag only.
awful.key({ modkey }, "#" .. i + 9, awful.key({ modkey }, "#" .. i + 9,
function () function()
local screen = awful.screen.focused() local screen = awful.screen.focused()
local tag = screen.tags[i] local tag = screen.tags[i]
if tag then if tag then
tag:view_only() tag:view_only()
end end
end, end,
{description = "view tag #"..i, group = "tag"}), { description = "view tag #" .. i, group = "tag" }),
-- Toggle tag display. -- Toggle tag display.
awful.key({ modkey, "Control" }, "#" .. i + 9, awful.key({ modkey, "Control" }, "#" .. i + 9,
function () function()
local screen = awful.screen.focused() local screen = awful.screen.focused()
local tag = screen.tags[i] local tag = screen.tags[i]
if tag then if tag then
awful.tag.viewtoggle(tag) awful.tag.viewtoggle(tag)
end end
end, end,
{description = "toggle tag #" .. i, group = "tag"}), { description = "toggle tag #" .. i, group = "tag" }),
-- Move client to tag. -- Move client to tag.
awful.key({ modkey, "Shift" }, "#" .. i + 9, awful.key({ modkey, "Shift" }, "#" .. i + 9,
function () function()
if client.focus then if client.focus then
local tag = client.focus.screen.tags[i] local tag = client.focus.screen.tags[i]
if tag then if tag then
@ -466,10 +466,10 @@ for i = 1, 9 do
end end
end end
end, end,
{description = "move focused client to tag #"..i, group = "tag"}), { description = "move focused client to tag #" .. i, group = "tag" }),
-- Toggle tag on focused client. -- Toggle tag on focused client.
awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9, awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
function () function()
if client.focus then if client.focus then
local tag = client.focus.screen.tags[i] local tag = client.focus.screen.tags[i]
if tag then if tag then
@ -477,20 +477,20 @@ for i = 1, 9 do
end end
end end
end, end,
{description = "toggle focused client on tag #" .. i, group = "tag"}) { description = "toggle focused client on tag #" .. i, group = "tag" })
) )
end end
clientbuttons = gears.table.join( clientbuttons = gears.table.join(
awful.button({ }, 1, function (c) awful.button({}, 1, function(c)
c:emit_signal("request::activate", "mouse_click", {raise = true}) c:emit_signal("request::activate", "mouse_click", { raise = true })
end), end),
awful.button({ modkey }, 1, function (c) awful.button({ modkey }, 1, function(c)
c:emit_signal("request::activate", "mouse_click", {raise = true}) c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.move(c) awful.mouse.client.move(c)
end), end),
awful.button({ modkey }, 3, function (c) awful.button({ modkey }, 3, function(c)
c:emit_signal("request::activate", "mouse_click", {raise = true}) c:emit_signal("request::activate", "mouse_click", { raise = true })
awful.mouse.client.resize(c) awful.mouse.client.resize(c)
end) end)
) )
@ -503,7 +503,7 @@ root.keys(globalkeys)
-- Rules to apply to new clients (through the "manage" signal). -- Rules to apply to new clients (through the "manage" signal).
awful.rules.rules = { awful.rules.rules = {
-- All clients will match this rule. -- All clients will match this rule.
{ rule = { }, { rule = {},
properties = { border_width = beautiful.border_width, properties = { border_width = beautiful.border_width,
border_color = beautiful.border_normal, border_color = beautiful.border_normal,
focus = awful.client.focus.filter, focus = awful.client.focus.filter,
@ -528,7 +528,7 @@ awful.rules.rules = {
"Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size. "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
"Wpa_gui", "Wpa_gui",
"veromix", "veromix",
"xtightvncviewer"}, "xtightvncviewer" },
-- Note that the name property shown in xprop might be set slightly after creation of the client -- Note that the name property shown in xprop might be set slightly after creation of the client
-- and the name shown there might not match defined rules here. -- and the name shown there might not match defined rules here.
@ -540,10 +540,10 @@ awful.rules.rules = {
"ConfigManager", -- Thunderbird's about:config. "ConfigManager", -- Thunderbird's about:config.
"pop-up", -- e.g. Google Chrome's (detached) Developer Tools. "pop-up", -- e.g. Google Chrome's (detached) Developer Tools.
} }
}, properties = { floating = true, beautiful.useless }}, }, properties = { floating = true, beautiful.useless } },
-- Add titlebars to normal clients and dialogs -- Add titlebars to normal clients and dialogs
{ rule_any = {type = { "normal", "dialog" } { rule_any = { type = { "normal", "dialog" }
}, properties = { titlebars_enabled = false } }, properties = { titlebars_enabled = false }
}, },
@ -561,7 +561,7 @@ awful.rules.rules = {
-- {{{ Signals -- {{{ Signals
-- Signal function to execute when a new client appears. -- Signal function to execute when a new client appears.
client.connect_signal("manage", function (c) client.connect_signal("manage", function(c)
-- Set the windows at the slave, -- Set the windows at the slave,
-- i.e. put it at the end of others instead of setting it master. -- i.e. put it at the end of others instead of setting it master.
-- if not awesome.startup then awful.client.setslave(c) end -- if not awesome.startup then awful.client.setslave(c) end
@ -578,17 +578,17 @@ end)
client.connect_signal("request::titlebars", function(c) client.connect_signal("request::titlebars", function(c)
-- buttons for the titlebar -- buttons for the titlebar
local buttons = gears.table.join( local buttons = gears.table.join(
awful.button({ }, 1, function() awful.button({}, 1, function()
c:emit_signal("request::activate", "titlebar", {raise = true}) c:emit_signal("request::activate", "titlebar", { raise = true })
awful.mouse.client.move(c) awful.mouse.client.move(c)
end), end),
awful.button({ }, 3, function() awful.button({}, 3, function()
c:emit_signal("request::activate", "titlebar", {raise = true}) c:emit_signal("request::activate", "titlebar", { raise = true })
awful.mouse.client.resize(c) awful.mouse.client.resize(c)
end) end)
) )
awful.titlebar(c) : setup { awful.titlebar(c):setup {
{ -- Left { -- Left
awful.titlebar.widget.iconwidget(c), awful.titlebar.widget.iconwidget(c),
buttons = buttons, buttons = buttons,
@ -603,11 +603,11 @@ client.connect_signal("request::titlebars", function(c)
layout = wibox.layout.flex.horizontal layout = wibox.layout.flex.horizontal
}, },
{ -- Right { -- Right
awful.titlebar.widget.floatingbutton (c), awful.titlebar.widget.floatingbutton(c),
awful.titlebar.widget.maximizedbutton(c), awful.titlebar.widget.maximizedbutton(c),
awful.titlebar.widget.stickybutton (c), awful.titlebar.widget.stickybutton(c),
awful.titlebar.widget.ontopbutton (c), awful.titlebar.widget.ontopbutton(c),
awful.titlebar.widget.closebutton (c), awful.titlebar.widget.closebutton(c),
layout = wibox.layout.fixed.horizontal() layout = wibox.layout.fixed.horizontal()
}, },
layout = wibox.layout.align.horizontal layout = wibox.layout.align.horizontal
@ -616,7 +616,7 @@ end)
-- Enable sloppy focus, so that focus follows mouse. -- Enable sloppy focus, so that focus follows mouse.
client.connect_signal("mouse::enter", function(c) client.connect_signal("mouse::enter", function(c)
c:emit_signal("request::activate", "mouse_enter", {raise = false}) c:emit_signal("request::activate", "mouse_enter", { raise = false })
end) end)
client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end) client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
@ -624,11 +624,6 @@ client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_n
-- }}} -- }}}
-- Autostart Applications -- Autostart Applications
awful.spawn.with_shell("picom --experimental-backends") awful.spawn.with_shell("picom --experimental-backends")
awful.spawn.with_shell("libinput-gestures-setup start")
awful.spawn.with_shell("dropbox")
awful.spawn.with_shell("flameshot")
awful.spawn.with_shell("setxkbmap lv") awful.spawn.with_shell("setxkbmap lv")
awful.spawn.with_shell("corectrl")

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/sh
if [ -n "$FIFO_UEBERZUG" ]; then if [ -n "$FIFO_UEBERZUG" ]; then
printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" printf '{"action": "remove", "identifier": "PREVIEW"}\n' >"$FIFO_UEBERZUG"
fi fi

View File

@ -2,7 +2,7 @@
image() { image() {
if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then if [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ]; then
printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG" printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2 - 1))" "$(($3 - 1))" "$1" >"$FIFO_UEBERZUG"
exit 1 exit 1
else else
chafa "$1" -s "$4x" chafa "$1" -s "$4x"
@ -12,8 +12,7 @@ image() {
batorcat() { batorcat() {
file="$1" file="$1"
shift shift
if command -v bat > /dev/null 2>&1 if command -v bat >/dev/null 2>&1; then
then
bat --color=always --style=plain --pager=never "$file" "$@" bat --color=always --style=plain --pager=never "$file" "$@"
else else
cat "$file" cat "$file"
@ -23,60 +22,60 @@ batorcat() {
CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))" CACHE="$HOME/.cache/lf/thumbnail.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | awk '{print $1}'))"
case "$(printf "%s\n" "$(readlink -f "$1")" | awk '{print tolower($0)}')" in case "$(printf "%s\n" "$(readlink -f "$1")" | awk '{print tolower($0)}')" in
*.tgz|*.tar.gz) tar tzf "$1" ;; *.tgz | *.tar.gz) tar tzf "$1" ;;
*.tar.bz2|*.tbz2) tar tjf "$1" ;; *.tar.bz2 | *.tbz2) tar tjf "$1" ;;
*.tar.txz|*.txz) xz --list "$1" ;; *.tar.txz | *.txz) xz --list "$1" ;;
*.tar) tar tf "$1" ;; *.tar) tar tf "$1" ;;
*.zip|*.jar|*.war|*.ear|*.oxt) unzip -l "$1" ;; *.zip | *.jar | *.war | *.ear | *.oxt) unzip -l "$1" ;;
*.rar) unrar l "$1" ;; *.rar) unrar l "$1" ;;
*.md) glow -s dark "$1" ;; *.md) glow -s dark "$1" ;;
*.7z) 7z l "$1" ;; *.7z) 7z l "$1" ;;
*.[1-8]) man "$1" | col -b ;; *.[1-8]) man "$1" | col -b ;;
*.o) nm "$1";; *.o) nm "$1" ;;
*.torrent) transmission-show "$1" ;; *.torrent) transmission-show "$1" ;;
*.iso) iso-info --no-header -l "$1" ;; *.iso) iso-info --no-header -l "$1" ;;
*.odt|*.ods|*.odp|*.sxw) odt2txt "$1" ;; *.odt | *.ods | *.odp | *.sxw) odt2txt "$1" ;;
*.doc) catdoc "$1" ;; *.doc) catdoc "$1" ;;
*.docx) docx2txt "$1" - ;; *.docx) docx2txt "$1" - ;;
*.xml|*.html) w3m -dump "$1";; *.xml | *.html) w3m -dump "$1" ;;
*.xls|*.xlsx) *.xls | *.xlsx)
ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | batorcat --language=csv ssconvert --export-type=Gnumeric_stf:stf_csv "$1" "fd://1" | batorcat --language=csv
;; ;;
*.wav|*.mp3|*.flac|*.m4a|*.wma|*.ape|*.ac3|*.og[agx]|*.spx|*.opus|*.as[fx]|*.mka) *.wav | *.mp3 | *.flac | *.m4a | *.wma | *.ape | *.ac3 | *.og[agx] | *.spx | *.opus | *.as[fx] | *.mka)
exiftool "$1" exiftool "$1"
;; ;;
*.pdf) *.pdf)
[ ! -f "${CACHE}.jpg" ] && \ [ ! -f "${CACHE}.jpg" ] &&
pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE" pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
image "${CACHE}.jpg" "$2" "$3" "$4" "$5" image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;; ;;
*.epub) *.epub)
[ ! -f "$CACHE" ] && \ [ ! -f "$CACHE" ] &&
epub-thumbnailer "$1" "$CACHE" 1024 epub-thumbnailer "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5" image "$CACHE" "$2" "$3" "$4" "$5"
;; ;;
*.cbz|*.cbr|*.cbt) *.cbz | *.cbr | *.cbt)
[ ! -f "$CACHE" ] && \ [ ! -f "$CACHE" ] &&
comicthumb "$1" "$CACHE" 1024 comicthumb "$1" "$CACHE" 1024
image "$CACHE" "$2" "$3" "$4" "$5" image "$CACHE" "$2" "$3" "$4" "$5"
;; ;;
*.avi|*.mp4|*.wmv|*.dat|*.3gp|*.ogv|*.mkv|*.mpg|*.mpeg|*.vob|*.fl[icv]|*.m2v|*.mov|*.webm|*.ts|*.mts|*.m4v|*.r[am]|*.qt|*.divx) *.avi | *.mp4 | *.wmv | *.dat | *.3gp | *.ogv | *.mkv | *.mpg | *.mpeg | *.vob | *.fl[icv] | *.m2v | *.mov | *.webm | *.ts | *.mts | *.m4v | *.r[am] | *.qt | *.divx)
[ ! -f "${CACHE}.jpg" ] && \ [ ! -f "${CACHE}.jpg" ] &&
ffmpegthumbnailer -i "$1" -o "${CACHE}.jpg" -s 0 -q 5 ffmpegthumbnailer -i "$1" -o "${CACHE}.jpg" -s 0 -q 5
image "${CACHE}.jpg" "$2" "$3" "$4" "$5" image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;; ;;
*.bmp|*.jpg|*.jpeg|*.png|*.xpm|*.webp|*.gif|*.jfif) *.bmp | *.jpg | *.jpeg | *.png | *.xpm | *.webp | *.gif | *.jfif)
image "$1" "$2" "$3" "$4" "$5" image "$1" "$2" "$3" "$4" "$5"
;; ;;
*.svg) *.svg)
[ ! -f "${CACHE}.jpg" ] && \ [ ! -f "${CACHE}.jpg" ] &&
convert "$1" "${CACHE}.jpg" convert "$1" "${CACHE}.jpg"
image "${CACHE}.jpg" "$2" "$3" "$4" "$5" image "${CACHE}.jpg" "$2" "$3" "$4" "$5"
;; ;;
*.ino) *.ino)
batorcat --language=cpp "$1" batorcat --language=cpp "$1"
;; ;;
*) *)
batorcat "$1" batorcat "$1"
;; ;;
esac esac

View File

@ -1,4 +1,4 @@
#! /usr/bin/env lua #!/usr/bin/env lua
--===================================================================== --=====================================================================
-- --
-- z.lua - a cd command that learns, by skywind 2018-2022 -- z.lua - a cd command that learns, by skywind 2018-2022
@ -91,7 +91,7 @@ local modname = 'z'
local MM = {} local MM = {}
_G[modname] = MM _G[modname] = MM
package.loaded[modname] = MM --return modname package.loaded[modname] = MM --return modname
setmetatable(MM, {__index = _G}) setmetatable(MM, { __index = _G })
if _ENV ~= nil then if _ENV ~= nil then
_ENV[modname] = MM _ENV[modname] = MM
@ -166,7 +166,7 @@ function string:startswith(text)
end end
function string:endswith(text) function string:endswith(text)
return text == "" or self:sub(-#text) == text return text == "" or self:sub(- #text) == text
end end
function string:lstrip() function string:lstrip()
@ -215,7 +215,6 @@ function string:join(parts)
return text return text
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- table size -- table size
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -226,16 +225,15 @@ function table.length(T)
return count return count
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- print table -- print table
----------------------------------------------------------------------- -----------------------------------------------------------------------
function dump(o) function dump(o)
if type(o) == 'table' then if type(o) == 'table' then
local s = '{ ' local s = '{ '
for k,v in pairs(o) do for k, v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end if type(k) ~= 'number' then k = '"' .. k .. '"' end
s = s .. '['..k..'] = ' .. dump(v) .. ',' s = s .. '[' .. k .. '] = ' .. dump(v) .. ','
end end
return s .. '} ' return s .. '} '
else else
@ -243,7 +241,6 @@ function dump(o)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- print table -- print table
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -254,10 +251,10 @@ function printT(table, level)
level = level or 1 level = level or 1
local indent = "" local indent = ""
for i = 1, level do for i = 1, level do
indent = indent.." " indent = indent .. " "
end end
if key ~= "" then if key ~= "" then
print(indent..key.." ".."=".." ".."{") print(indent .. key .. " " .. "=" .. " " .. "{")
else else
print(indent .. "{") print(indent .. "{")
end end
@ -268,7 +265,7 @@ function printT(table, level)
key = k key = k
func(v, level + 1) func(v, level + 1)
else else
local content = string.format("%s%s = %s", indent .. " ",tostring(k), tostring(v)) local content = string.format("%s%s = %s", indent .. " ", tostring(k), tostring(v))
print(content) print(content)
end end
end end
@ -277,7 +274,6 @@ function printT(table, level)
func(table, level) func(table, level)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- invoke command and retrive output -- invoke command and retrive output
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -291,7 +287,6 @@ function os.call(command)
return line return line
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- write log -- write log
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -308,7 +303,6 @@ function os.log(text)
fp:close() fp:close()
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- ffi optimize (luajit has builtin ffi module) -- ffi optimize (luajit has builtin ffi module)
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -317,7 +311,7 @@ os.native.status, os.native.ffi = pcall(require, "ffi")
if os.native.status then if os.native.status then
local ffi = os.native.ffi local ffi = os.native.ffi
if windows then if windows then
ffi.cdef[[ ffi.cdef [[
int GetFullPathNameA(const char *name, uint32_t size, char *out, char **name); int GetFullPathNameA(const char *name, uint32_t size, char *out, char **name);
int ReplaceFileA(const char *dstname, const char *srcname, void *, uint32_t, void *, void *); int ReplaceFileA(const char *dstname, const char *srcname, void *, uint32_t, void *, void *);
uint32_t GetTickCount(void); uint32_t GetTickCount(void);
@ -335,24 +329,30 @@ if os.native.status then
local hr = kernel32.GetFullPathNameA(name, 4096, buffer, nil) local hr = kernel32.GetFullPathNameA(name, 4096, buffer, nil)
return (hr > 0) and ffi.string(buffer, hr) or nil return (hr > 0) and ffi.string(buffer, hr) or nil
end end
function os.native.ReplaceFile(replaced, replacement) function os.native.ReplaceFile(replaced, replacement)
local hr = kernel32.ReplaceFileA(replaced, replacement, nil, 2, nil, nil) local hr = kernel32.ReplaceFileA(replaced, replacement, nil, 2, nil, nil)
return (hr ~= 0) and true or false return (hr ~= 0) and true or false
end end
function os.native.GetTickCount() function os.native.GetTickCount()
return kernel32.GetTickCount() return kernel32.GetTickCount()
end end
function os.native.GetFileAttributes(name) function os.native.GetFileAttributes(name)
return kernel32.GetFileAttributesA(name) return kernel32.GetFileAttributesA(name)
end end
function os.native.GetLongPathName(name) function os.native.GetLongPathName(name)
local hr = kernel32.GetLongPathNameA(name, buffer, 4096) local hr = kernel32.GetLongPathNameA(name, buffer, 4096)
return (hr ~= 0) and ffi.string(buffer, hr) or nil return (hr ~= 0) and ffi.string(buffer, hr) or nil
end end
function os.native.GetShortPathName(name) function os.native.GetShortPathName(name)
local hr = kernel32.GetShortPathNameA(name, buffer, 4096) local hr = kernel32.GetShortPathNameA(name, buffer, 4096)
return (hr ~= 0) and ffi.string(buffer, hr) or nil return (hr ~= 0) and ffi.string(buffer, hr) or nil
end end
function os.native.GetRealPathName(name) function os.native.GetRealPathName(name)
local short = os.native.GetShortPathName(name) local short = os.native.GetShortPathName(name)
if short then if short then
@ -360,10 +360,12 @@ if os.native.status then
end end
return nil return nil
end end
function os.native.exists(name) function os.native.exists(name)
local attr = os.native.GetFileAttributes(name) local attr = os.native.GetFileAttributes(name)
return attr ~= INVALID_FILE_ATTRIBUTES return attr ~= INVALID_FILE_ATTRIBUTES
end end
function os.native.isdir(name) function os.native.isdir(name)
local attr = os.native.GetFileAttributes(name) local attr = os.native.GetFileAttributes(name)
local isdir = FILE_ATTRIBUTE_DIRECTORY local isdir = FILE_ATTRIBUTE_DIRECTORY
@ -372,13 +374,14 @@ if os.native.status then
end end
return (attr % (2 * isdir)) >= isdir return (attr % (2 * isdir)) >= isdir
end end
function os.native.getcwd() function os.native.getcwd()
local hr = kernel32.GetCurrentDirectoryA(4096, buffer) local hr = kernel32.GetCurrentDirectoryA(4096, buffer)
if hr <= 0 then return nil end if hr <= 0 then return nil end
return ffi.string(buffer, hr) return ffi.string(buffer, hr)
end end
else else
ffi.cdef[[ ffi.cdef [[
typedef struct { long tv_sec; long tv_usec; } timeval; typedef struct { long tv_sec; long tv_usec; } timeval;
int gettimeofday(timeval *tv, void *tz); int gettimeofday(timeval *tv, void *tz);
int access(const char *name, int mode); int access(const char *name, int mode);
@ -393,13 +396,16 @@ if os.native.status then
local usec = tonumber(timeval[0].tv_usec) local usec = tonumber(timeval[0].tv_usec)
return sec + (usec * 0.000001) return sec + (usec * 0.000001)
end end
function os.native.access(name, mode) function os.native.access(name, mode)
return ffi.C.access(name, mode) return ffi.C.access(name, mode)
end end
function os.native.realpath(name) function os.native.realpath(name)
local path = ffi.C.realpath(name, buffer) local path = ffi.C.realpath(name, buffer)
return (path ~= nil) and ffi.string(buffer) or nil return (path ~= nil) and ffi.string(buffer) or nil
end end
function os.native.getcwd() function os.native.getcwd()
local hr = ffi.C.getcwd(buffer, 4099) local hr = ffi.C.getcwd(buffer, 4099)
return hr ~= nil and ffi.string(buffer) or nil return hr ~= nil and ffi.string(buffer) or nil
@ -412,6 +418,7 @@ if os.native.status then
return math.floor(os.native.gettimeofday() * 1000) return math.floor(os.native.gettimeofday() * 1000)
end end
end end
os.native.init = true os.native.init = true
end end
@ -446,7 +453,6 @@ function os.pwd()
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- which executable -- which executable
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -464,7 +470,7 @@ function os.path.which(exename)
return name return name
end end
else else
for _, ext in pairs({'.exe', '.cmd', '.bat'}) do for _, ext in pairs({ '.exe', '.cmd', '.bat' }) do
local name = path .. '\\' .. exename .. ext local name = path .. '\\' .. exename .. ext
if path == '.' then if path == '.' then
name = exename .. ext name = exename .. ext
@ -478,7 +484,6 @@ function os.path.which(exename)
return nil return nil
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- absolute path (simulated) -- absolute path (simulated)
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -487,7 +492,6 @@ function os.path.absolute(path)
return os.path.normpath(os.path.join(pwd, path)) return os.path.normpath(os.path.join(pwd, path))
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- absolute path (system call, can fall back to os.path.absolute) -- absolute path (system call, can fall back to os.path.absolute)
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -527,7 +531,7 @@ function os.path.abspath(path)
return test return test
end end
end end
for _, python in pairs({'python3', 'python2', 'python'}) do for _, python in pairs({ 'python3', 'python2', 'python' }) do
local s = 'sys.stdout.write(os.path.abspath(sys.argv[1]))' local s = 'sys.stdout.write(os.path.abspath(sys.argv[1]))'
local s = '-c "import os, sys;' .. s .. '" \'' .. path .. '\'' local s = '-c "import os, sys;' .. s .. '" \'' .. path .. '\''
local s = python .. ' ' .. s local s = python .. ' ' .. s
@ -543,7 +547,6 @@ function os.path.abspath(path)
return os.path.absolute(path) return os.path.absolute(path)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- dir exists -- dir exists
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -570,7 +573,6 @@ function os.path.isdir(pathname)
return os.path.exists(name) return os.path.exists(name)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- file or path exists -- file or path exists
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -586,7 +588,7 @@ function os.path.exists(name)
if code == 13 or code == 17 then if code == 13 or code == 17 then
return true return true
elseif code == 30 then elseif code == 30 then
local f = io.open(name,"r") local f = io.open(name, "r")
if f ~= nil then if f ~= nil then
io.close(f) io.close(f)
return true return true
@ -603,7 +605,6 @@ function os.path.exists(name)
return true return true
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- is absolute path -- is absolute path
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -624,7 +625,6 @@ function os.path.isabs(path)
return false return false
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- normalize path -- normalize path
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -638,7 +638,6 @@ function os.path.norm(pathname)
return pathname return pathname
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- normalize . and .. -- normalize . and ..
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -683,7 +682,6 @@ function os.path.normpath(path)
return path == '' and '.' or path return path == '' and '.' or path
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- join two path -- join two path
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -744,7 +742,6 @@ function os.path.join(path1, path2)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- split -- split
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -797,7 +794,6 @@ function os.path.split(path)
return head, tail return head, tail
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- check subdir -- check subdir
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -818,7 +814,6 @@ function os.path.subdir(basename, subname)
return false return false
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- check single name element -- check single name element
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -834,7 +829,6 @@ function os.path.single(path)
return true return true
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- expand user home -- expand user home
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -862,14 +856,12 @@ function os.path.expand(pathname)
return pathname return pathname
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- search executable -- search executable
----------------------------------------------------------------------- -----------------------------------------------------------------------
function os.path.search(name) function os.path.search(name)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- get lua executable -- get lua executable
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -892,7 +884,6 @@ function os.interpreter()
return os.path.abspath(lua) return os.path.abspath(lua)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- get script name -- get script name
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -908,7 +899,6 @@ function os.scriptname()
return os.path.abspath(script) return os.path.abspath(script)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- get environ -- get environ
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -943,7 +933,6 @@ function os.environ(name, default)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- parse option -- parse option
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -985,7 +974,6 @@ function os.getopt(argv)
return options, args return options, args
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- generate random seed -- generate random seed
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1022,7 +1010,6 @@ function math.random_init()
math.randomseed(number) math.randomseed(number)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- math random string -- math random string
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1042,7 +1029,6 @@ function math.random_string(N)
return text return text
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- returns true for path is insensitive -- returns true for path is insensitive
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1059,7 +1045,6 @@ function path_case_insensitive()
return false return false
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- load and split data -- load and split data
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1094,7 +1079,6 @@ function data_load(filename)
return M return M
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- save data -- save data
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1151,7 +1135,6 @@ function data_save(filename, M)
return true return true
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- filter out bad dirname -- filter out bad dirname
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1168,7 +1151,6 @@ function data_filter(M)
return N return N
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- insert item -- insert item
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1224,7 +1206,6 @@ function data_insert(M, filename)
return M return M
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- change database -- change database
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1232,7 +1213,6 @@ function data_file_set(name)
DATA_FILE = name DATA_FILE = name
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- change pattern -- change pattern
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1251,7 +1231,6 @@ function case_insensitive_pattern(pattern)
return p return p
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- pathmatch -- pathmatch
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1286,7 +1265,6 @@ function path_match(pathname, patterns, matchlast)
return true return true
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- select matched pathnames -- select matched pathnames
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1310,7 +1288,6 @@ function data_select(M, patterns, matchlast)
return N return N
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- update frecent -- update frecent
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1333,7 +1310,6 @@ function data_update_frecent(M)
return M return M
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- add path -- add path
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1403,7 +1379,6 @@ function z_add(path)
return true return true
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- remove path -- remove path
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1447,7 +1422,6 @@ function z_remove(path)
data_save(DATA_FILE, X) data_save(DATA_FILE, X)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- match method: frecent, rank, time -- match method: frecent, rank, time
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1480,7 +1454,7 @@ function z_match(patterns, method, subdir)
item.score = item.frecent item.score = item.frecent
end end
end end
table.sort(M, function (a, b) return a.score > b.score end) table.sort(M, function(a, b) return a.score > b.score end)
local pwd = (PWD == nil or PWD == '') and os.getenv('PWD') or PWD local pwd = (PWD == nil or PWD == '') and os.getenv('PWD') or PWD
if pwd == nil or pwd == '' then if pwd == nil or pwd == '' then
pwd = os.pwd() pwd = os.pwd()
@ -1511,7 +1485,6 @@ function z_match(patterns, method, subdir)
return M return M
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- pretty print -- pretty print
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1574,7 +1547,6 @@ function z_print(M, weight, number)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- calculate jump dir -- calculate jump dir
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1611,7 +1583,7 @@ function z_cd(patterns)
return M[1].name return M[1].name
end end
if os.environ('_ZL_INT_SORT', false) then if os.environ('_ZL_INT_SORT', false) then
table.sort(M, function (a, b) return a.name < b.name end) table.sort(M, function(a, b) return a.name < b.name end)
end end
local retval = nil local retval = nil
if Z_INTERACTIVE == 1 then if Z_INTERACTIVE == 1 then
@ -1667,7 +1639,6 @@ function z_cd(patterns)
return (retval ~= '' and retval or nil) return (retval ~= '' and retval or nil)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- purge invalid paths -- purge invalid paths
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1683,7 +1654,6 @@ function z_purge()
return x, y return x, y
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- find_vcs_root -- find_vcs_root
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1706,7 +1676,6 @@ function find_vcs_root(path)
return nil return nil
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- cd to parent directories which contains keyword -- cd to parent directories which contains keyword
-- #args == 0 -> returns to vcs root -- #args == 0 -> returns to vcs root
@ -1775,7 +1744,6 @@ function cd_backward(args, options, pwd)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- cd minus: "z -", "z --", "z -2" -- cd minus: "z -", "z --", "z -2"
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1801,7 +1769,6 @@ function cd_minus(args, options)
return nil return nil
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- cd breadcrumbs: z -b -i, z -b -I -- cd breadcrumbs: z -b -i, z -b -I
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1815,10 +1782,10 @@ function cd_breadcrumbs(pwd, interactive)
while true do while true do
local head, name = os.path.split(path) local head, name = os.path.split(path)
if head == path then -- reached root if head == path then -- reached root
table.insert(elements, {head, head}) table.insert(elements, { head, head })
break break
elseif name ~= '' then elseif name ~= '' then
table.insert(elements, {name, path}) table.insert(elements, { name, path })
else else
break break
end end
@ -1886,7 +1853,6 @@ function cd_breadcrumbs(pwd, interactive)
return elements[index][2] return elements[index][2]
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- main entry -- main entry
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -1976,8 +1942,8 @@ function main(argv)
end end
elseif options['--complete'] then elseif options['--complete'] then
local line = args[1] and args[1] or '' local line = args[1] and args[1] or ''
local head = line:sub(Z_CMD:len()+1):gsub('^%s+', '') local head = line:sub(Z_CMD:len() + 1):gsub('^%s+', '')
local M = z_match({head}, Z_METHOD, Z_SUBDIR) local M = z_match({ head }, Z_METHOD, Z_SUBDIR)
for _, item in pairs(M) do for _, item in pairs(M) do
print(item.name) print(item.name)
end end
@ -1987,7 +1953,6 @@ function main(argv)
return true return true
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- initialize from environment variable -- initialize from environment variable
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2060,7 +2025,6 @@ function z_init()
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- initialize clink hooks -- initialize clink hooks
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2078,14 +2042,16 @@ function z_clink_init()
end end
z_add(clink.get_cwd()) z_add(clink.get_cwd())
end end
clink.prompt.register_filter(z_add_to_database, _zl_clink_prompt_priority) clink.prompt.register_filter(z_add_to_database, _zl_clink_prompt_priority)
function z_match_completion(word) function z_match_completion(word)
local M = z_match({word}, Z_METHOD, Z_SUBDIR) local M = z_match({ word }, Z_METHOD, Z_SUBDIR)
for _, item in pairs(M) do for _, item in pairs(M) do
clink.add_match(item.name) clink.add_match(item.name)
end end
return {} return {}
end end
local z_parser = clink.arg.new_parser() local z_parser = clink.arg.new_parser()
z_parser:set_arguments({ z_match_completion }) z_parser:set_arguments({ z_match_completion })
z_parser:set_flags("-c", "-r", "-i", "--cd", "-e", "-b", "--add", "-x", "--purge", z_parser:set_flags("-c", "-r", "-i", "--cd", "-e", "-b", "--add", "-x", "--purge",
@ -2093,7 +2059,6 @@ function z_clink_init()
clink.arg.register_parser("z", z_parser) clink.arg.register_parser("z", z_parser)
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- shell scripts -- shell scripts
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2343,7 +2308,6 @@ function z_shell_init(opts)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- Fish shell init -- Fish shell init
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2468,7 +2432,6 @@ function z_fish_init(opts)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- windows .cmd script -- windows .cmd script
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2694,7 +2657,6 @@ function z_windows_init(opts)
end end
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- help -- help
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2713,7 +2675,6 @@ function z_help()
print(cmd .. '-b foo # cd to the parent directory starting with foo') print(cmd .. '-b foo # cd to the parent directory starting with foo')
end end
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- LFS optimize -- LFS optimize
----------------------------------------------------------------------- -----------------------------------------------------------------------
@ -2726,10 +2687,10 @@ if os.lfs.enable ~= nil then
os.lfs.status, os.lfs.pkg = pcall(require, 'lfs') os.lfs.status, os.lfs.pkg = pcall(require, 'lfs')
if os.lfs.status then if os.lfs.status then
local lfs = os.lfs.pkg local lfs = os.lfs.pkg
os.path.exists = function (name) os.path.exists = function(name)
return lfs.attributes(name) and true or false return lfs.attributes(name) and true or false
end end
os.path.isdir = function (name) os.path.isdir = function(name)
local mode = lfs.attributes(name) local mode = lfs.attributes(name)
if not mode then if not mode then
return false return false

View File

@ -1,6 +1,5 @@
#!/bin/zsh #!/bin/zsh
if [[ "$(tty)" = "/dev/tty1" ]]; then if [[ '$(tty)' = '/dev/tty1' ]]; then
pgrep awesome || sx pgrep awesome || sx
fi fi

View File

@ -1,6 +1,3 @@
# clear
# cd ~
# Flex on ubuntu users # Flex on ubuntu users
fastfetch fastfetch
# pfetch # pfetch
@ -38,8 +35,7 @@ _comp_options+=(globdots) # Include hidden file
HISTFILE=~/.config/zsh/.zshistory HISTFILE=~/.config/zsh/.zshistory
HISTSIZE=10000 HISTSIZE=10000
SAVEHIST=10000 SAVEHIST=10000
WORDCHARS=${WORDCHARS//\/[&.;]} # Don't consider certain part of the word WORDCHARS=${WORDCHARS//\/[&.;]/} # Don't consider certain part of the word
# theme/plugins # theme/plugins
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 2>/dev/null source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh 2>/dev/null
@ -53,44 +49,42 @@ bindkey -e
bindkey -v bindkey -v
export KEYTIMEOUT=1 export KEYTIMEOUT=1
# Change cursor shape for different vi modes. # Change cursor shape for different vi modes.
function zle-keymap-select { function zle-keymap-select {
case $KEYMAP in case $KEYMAP in
vicmd) echo -ne "\e[1 q";; # block vicmd) echo -ne '\e[1 q' ;; # block
viins|main) echo -ne "\e[5 q";; # beam viins | main) echo -ne '\e[5 q' ;; # beam
esac esac
} }
zle -N zle-keymap-select zle -N zle-keymap-select
zle-line-init() { zle-line-init() {
zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere) zle -K viins # initiate `vi insert` as keymap (can be removed if `bindkey -V` has been set elsewhere)
echo -ne "\e[5 q" echo -ne '\e[5 q'
} }
zle -N zle-line-init zle -N zle-line-init
echo -ne "\e[5 q" # Use beam shape cursor on startup. echo -ne '\e[5 q' # Use beam shape cursor on startup.
preexec() { echo -ne "\e[5 q" ;} # Use beam shape cursor for each new prompt. preexec() { echo -ne '\e[5 q'; } # Use beam shape cursor for each new prompt.
# Run exa on directory change
function cd() { function cd() {
new_directory="$*"; new_directory="$*"
if [ $# -eq 0 ]; then if [ $# -eq 0 ]; then
new_directory=${HOME}; new_directory=${HOME}
fi; fi
builtin cd "${new_directory}" && exa -a --icons --group-directories-first builtin cd "${new_directory}" && exa -a --icons --group-directories-first
} }
# Use lf to switch directories and bind it to ctrl-o # Use lf to switch directories and bind it to ctrl-o
lfcd () { function lfcd() {
tmp="$(mktemp)" tmp="$(mktemp)"
lfrun -last-dir-path="$tmp" "$@" lfrun -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then if [ -f "$tmp" ]; then
dir="$(cat "$tmp")" dir="$(bat "$tmp")"
rm -f "$tmp" >/dev/null rm -f "$tmp" >/dev/null
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir" [ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi fi
} }
# Navigate words with CTRL+ARROW keys # Navigate words with CTRL+ARROW keys
bindkey '^[Oc' forward-word bindkey '^[Oc' forward-word
bindkey '^[Od' backward-word bindkey '^[Od' backward-word
@ -98,7 +92,7 @@ bindkey '^[[1;5C' forward-word
bindkey '^[[1;5D' backward-word bindkey '^[[1;5D' backward-word
bindkey '^H' backward-kill-word # delete previous word with CTRL+BACKSPACE bindkey '^H' backward-kill-word # delete previous word with CTRL+BACKSPACE
bindkey '^[[Z' undo # SHIFT+TAB undo last action bindkey '^[[Z' undo # SHIFT+TAB undo last action
bindkey "^[[3~" delete-char bindkey '^[[3~' delete-char
bindkey '^[[A' history-substring-search-up bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down bindkey '^[[B' history-substring-search-down
@ -110,22 +104,23 @@ bindkey -M menuselect 'l' vi-forward-char
bindkey -M menuselect 'j' vi-down-line-or-history bindkey -M menuselect 'j' vi-down-line-or-history
bindkey -v '^?' backward-delete-char bindkey -v '^?' backward-delete-char
bindkey -s "^o" "^ulfcd\n" bindkey -s '^o' '^ulfcd\n'
bindkey -s "^a" "ubc -lq\n" # bindkey -s '^a' 'ubc -lq\n'
bindkey "^[[P" delete-char bindkey '^[[P' delete-char
# Edit line in vim with ctrl-e # Edit line in vim with ctrl-e
autoload edit-command-line; zle -N edit-command-line autoload edit-command-line
bindkey "^e" edit-command-line zle -N edit-command-line
bindkey -M vicmd "^[[P" vi-delete-char bindkey '^e' edit-command-line
bindkey -M vicmd "^e" edit-command-line bindkey -M vicmd '^[[P' vi-delete-char
bindkey -M visual "^[[P" vi-delete bindkey -M vicmd '^e' edit-command-line
bindkey -M visual '^[[P' vi-delete
# Aliases # Aliases
alias cp='cp -iv' # Confirm before overwriting something alias cp='cp -iv' # Confirm before overwriting something
alias mv="mv -iv" alias mv='mv -iv'
alias rm="rm -vI" alias rm='rm -vI'
alias mkdir="mkdir -pv" alias mkdir='mkdir -pv'
alias df='df -h' # Human-readable sizes alias df='df -h' # Human-readable sizes
alias free='free -m' # Show sizes in MB alias free='free -m' # Show sizes in MB
alias gitu='git add . && git commit && git push' alias gitu='git add . && git commit && git push'
@ -138,18 +133,18 @@ alias pman='doas pacman'
alias battery='acpi' alias battery='acpi'
alias airpods='bluetoothctl connect C8:B1:CD:E0:14:4F' alias airpods='bluetoothctl connect C8:B1:CD:E0:14:4F'
alias weather='curl wttr.in/' alias weather='curl wttr.in/'
alias ww="nvim ~/vimwiki/index.wiki" alias ww='nvim ~/vimwiki/index.wiki'
alias py="python" alias py='python'
alias grep="grep --color=auto" alias grep='grep --color=auto'
alias diff="diff --color=auto" alias diff='diff --color=auto'
alias ip="ip -color=auto" alias ip='ip -color=auto'
alias grep="rg" alias grep='rg'
alias code="vscodium" alias code='vscodium'
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
autoload -U promptinit; promptinit autoload -U promptinit
promptinit
prompt spaceship prompt spaceship
# PROMPT # PROMPT
@ -225,4 +220,3 @@ SPACESHIP_VENV_SHOW=true
SPACESHIP_CONDA_SHOW=false SPACESHIP_CONDA_SHOW=false
SPACESHIP_PYENV_SHOW=true SPACESHIP_PYENV_SHOW=true
SPACESHIP_VI_MODE_SHOW=false SPACESHIP_VI_MODE_SHOW=false

2
.gitignore vendored
View File

@ -1 +1 @@
vscodium/extensions

View File

@ -11,6 +11,6 @@
- All configs that can be in `~/.config/` are. - All configs that can be in `~/.config/` are.
- Some environmental variables have been set in `~/.zprofile` to move configs into `~/.config/` - Some environmental variables have been set in `~/.zprofile` to move configs into `~/.config/`
## Credits ## Credits
- [lfimg by cirala](https://github.com/cirala/lfimg) - [lfimg by cirala](https://github.com/cirala/lfimg)