From f7d56571398f7e0f3c29df955633cc2c35a2277e Mon Sep 17 00:00:00 2001 From: purhan Date: Thu, 20 May 2021 14:39:47 +0530 Subject: [PATCH] simplify awesome build --- src/.config/awesome/README.md | 4 - src/.config/awesome/configuration/apps.lua | 6 +- .../awesome/configuration/keys/global.lua | 65 +- src/.config/awesome/configuration/rofi.rasi | 148 --- src/.config/awesome/configuration/tags.lua | 36 +- .../awesome/configuration/utils/autostart | 3 - src/.config/awesome/layout/init.lua | 15 +- src/.config/awesome/module/smart-borders.lua | 927 ++++++++++++++++++ src/.config/awesome/rc.lua | 55 +- src/.config/awesome/theme/theme.lua | 6 +- src/.config/kitty/gruvbox-material.conf | 2 +- src/.config/nvim/init.vim | 2 +- .../qtile/__pycache__/config.cpython-38.pyc | Bin 5777 -> 0 bytes src/.config/qtile/autostart.sh | 5 - src/.config/qtile/config.py | 289 ------ src/.config/qtile/requirements.txt | 3 - src/.config/qtile/src/rofi-power.sh | 35 - .../User/CP-build-system.sublime-build | 2 +- .../SublimeAStyleFormatter.sublime-settings | 3 + .../Terminus/Terminus.hidden-color-scheme | 46 +- src/.config/zsh/Makefile | 4 +- src/.gitconfig | 4 - src/.xprofile | 2 +- src/scripts/Makefile | 3 + src/scripts/hooks/git/pre-push | 17 - 25 files changed, 1039 insertions(+), 643 deletions(-) delete mode 100644 src/.config/awesome/README.md delete mode 100644 src/.config/awesome/configuration/rofi.rasi create mode 100644 src/.config/awesome/module/smart-borders.lua delete mode 100644 src/.config/qtile/__pycache__/config.cpython-38.pyc delete mode 100755 src/.config/qtile/autostart.sh delete mode 100644 src/.config/qtile/config.py delete mode 100644 src/.config/qtile/requirements.txt delete mode 100755 src/.config/qtile/src/rofi-power.sh create mode 100755 src/.config/sublime-text-3/Packages/User/SublimeAStyleFormatter.sublime-settings delete mode 100755 src/scripts/hooks/git/pre-push diff --git a/src/.config/awesome/README.md b/src/.config/awesome/README.md deleted file mode 100644 index 248aa0e..0000000 --- a/src/.config/awesome/README.md +++ /dev/null @@ -1,4 +0,0 @@ -## Awesome WM Config - - -![](Demo.png) diff --git a/src/.config/awesome/configuration/apps.lua b/src/.config/awesome/configuration/apps.lua index 4e28785..a7aaebc 100644 --- a/src/.config/awesome/configuration/apps.lua +++ b/src/.config/awesome/configuration/apps.lua @@ -18,9 +18,9 @@ return { region_screenshot = '~/.config/awesome/configuration/utils/screenshot -r', delayed_screenshot = '~/.config/awesome/configuration/utils/screenshot --delayed -r', browser = 'env firefox', - editor = 'gvim', + editor = 'kitty', social = 'env discord', - files = 'nautilus', + files = 'thunar', power_manager = 'gnome-power-statistics' }, -- List of commands to start once on start-up @@ -32,7 +32,7 @@ return { 'ibus-daemon --xim --daemonize', 'scream-start', 'numlockx on', - '/usr/lib/xfce-polkit/xfce-polkit & eval $(gnome-keyring-daemon -s --components=pkcs11,secrets,ssh,gpg)', -- credential manager + '/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1 & eval $(gnome-keyring-daemon -s --components=pkcs11,secrets,ssh,gpg)', -- credential manager 'blueman-tray' } } diff --git a/src/.config/awesome/configuration/keys/global.lua b/src/.config/awesome/configuration/keys/global.lua index 5d9dccc..9c9c475 100644 --- a/src/.config/awesome/configuration/keys/global.lua +++ b/src/.config/awesome/configuration/keys/global.lua @@ -1,12 +1,9 @@ require('awful.autofocus') local awful = require('awful') -local beautiful = require('beautiful') local hotkeys_popup = require('awful.hotkeys_popup').widget local modkey = require('configuration.keys.mod').modKey local altkey = require('configuration.keys.mod').altKey local apps = require('configuration.apps') -local dpi = require('beautiful').xresources.apply_dpi -local theme = require('theme') -- Key bindings local globalKeys = awful.util.table.join( -- Hotkeys @@ -65,18 +62,6 @@ end, { end, { description = 'switch to next window', group = 'client' -}), awful.key({modkey}, 'm', function() - focus = not _G.client.focus - if not focus then - _G.client.focus.minimized = true - else - for _, c in ipairs(mouse.screen.selected_tag:clients()) do - c.minimized = false - end - end -end, { - description = 'minimize window in focus / unminimize all', - group = 'client' }), awful.key({altkey, 'Shift'}, 'Tab', function() awful.client.focus.byidx(-1) if _G.client.focus then @@ -105,16 +90,6 @@ end, { end, { description = 'mark an area and screenshot it to your clipboard', group = 'screenshots (clipboard)' -}), awful.key({modkey}, 'c', function() - awful.util.spawn(apps.default.editor) -end, { - description = 'open a text/code editor', - group = 'launcher' -}), awful.key({modkey}, 'b', function() - awful.util.spawn(apps.default.browser) -end, { - description = 'open a browser', - group = 'launcher' }), awful.key({modkey}, 'Return', function() awful.util.spawn_with_shell(apps.default.terminal) end, { @@ -126,19 +101,6 @@ end, { }), awful.key({modkey, 'Control'}, 'q', _G.awesome.quit, { description = 'quit awesome', group = 'awesome' -}), awful.key({modkey, 'Shift'}, 'g', function(t) - t = t or awful.screen.focused().selected_tag - local current_gap = t.gap - local new_gap - if current_gap == 0 then - new_gap = beautiful.gaps - else - new_gap = 0 - end - t.gap = new_gap -end, { - description = 'toggle gaps', - group = 'awesome' }), awful.key({modkey}, 'p', function() awful.util.spawn_with_shell(apps.default.power_command) end, { @@ -234,26 +196,11 @@ end, { end, { description = 'decrease the number of columns', group = 'layout' -}), awful.key({modkey, 'Control'}, 'n', function() - local c = awful.client.restore() - -- Focus restored client - if c then - _G.client.focus = c - c:raise() - end -end, { - description = 'restore minimized', - group = 'client' }), awful.key({modkey}, 'k', function() _G.toggle_splash() end, { description = 'toggle splash terminal', group = 'launcher' -}), awful.key({modkey}, 'j', function() - _G.toggle_splash_height() -end, { - description = 'toggle splash terminal height', - group = 'launcher' }), awful.key({}, 'XF86MonBrightnessUp', function() awful.spawn('xbacklight -inc 10') end, { @@ -308,17 +255,7 @@ end, { }), awful.key({modkey}, 'o', awful.client.movetoscreen, { description = 'move window to next screen', group = 'client' -}), awful.key({modkey}, 'n', function() - awful.spawn(awful.screen.focused().selected_tag.defaultApp, { - tag = _G.mouse.screen.selected_tag, - placement = awful.placement.bottom_right - }) -end, { - description = 'open default program for tag/workspace', - group = 'tag' -}), awful.key({'Control', altkey}, 'space', function() - awful.util.spawn_with_shell('vm-attach attach') -end)) +})) -- Bind all key numbers to tags. -- Be careful: we use keycodes to make it works on any keyboard layout. diff --git a/src/.config/awesome/configuration/rofi.rasi b/src/.config/awesome/configuration/rofi.rasi deleted file mode 100644 index e158e40..0000000 --- a/src/.config/awesome/configuration/rofi.rasi +++ /dev/null @@ -1,148 +0,0 @@ -/** - * User: deadguy - * Copyright: deadguy - */ - -configuration { - display-drun: "Activate"; - display-run: "Execute"; - show-icons: true; - sidebar-mode: false; -} - -* { - background-color: rgb(0, 0, 0, 0); - text-color: rgb(255, 255, 255); - selbg: rgb(255, 255, 255, 0.5); - urgbg: rgb(255, 255, 255); - actbg: rgb(255, 255, 255, 0.05); - winbg: rgb(255, 255, 255); - - selected-normal-foreground: @winbg; - normal-foreground: @text-color; - selected-normal-background: @actbg; - normal-background: @background-color; - - selected-urgent-foreground: @background-color; - urgent-foreground: @text-color; - selected-urgent-background: @urgbg; - urgent-background: @background-color; - - selected-active-foreground: @winbg; - active-foreground: @text-color; - selected-active-background: @actbg; - active-background: @selbg; - - line-margin: 2; - line-padding: 2; - separator-style: "none"; - hide-scrollbar: "true"; - margin: 0px; - padding: 0px; - font: "FiraCode Nerd Font Mono Medium 10"; -} - -window { - location: west; - anchor: west; - x-offset: 0px; - height: 100%; - width: 30%; - padding: 0%; - orientation: horizontal; - children: [mainbox]; - background-color: rgb(20, 20, 20, 0.9); -} - -mainbox { - spacing: 0em; - padding: 0px; - width: 100%; - children: [ inputbar, listview ]; - expand: true; -} - -button { padding: 5px 2px; } - -button selected { - background-color: @active-background; - text-color: @background-color; -} - -inputbar { - children: [ entry ]; -} - -textbox-prompt-colon { - text-color: inherit; - expand: false; - margin: 0 0.3em 0em 0em; - } - -listview { - spacing: 0em; - dynamic: false; - cycle: false; -} - -element { - padding: 16px; - border: 0 0 0 0 solid; -} - -entry { - expand: true; - text-color: @normal-foreground; - background-color: rgb(0, 0, 0, 0); - vertical-align: 1; - padding: 12px; - font: "FiraCode Nerd Font Mono Bold 18"; -} - -element normal.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} - -element normal.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} - -element normal.active { - background-color: @active-background; - text-color: @active-foreground; -} - -element selected.normal { - background-color: @selected-normal-background; - text-color: @selected-normal-foreground; - padding: 16px; - border: 0 0 0 0 solid; - border-color: @active-background; -} - -element selected.urgent { - background-color: @selected-urgent-background; - text-color: @selected-urgent-foreground; -} - -element selected.active { - background-color: @selected-active-background; - text-color: @selected-active-foreground; -} - -element alternate.normal { - background-color: @normal-background; - text-color: @normal-foreground; -} - -element alternate.urgent { - background-color: @urgent-background; - text-color: @urgent-foreground; -} - -element alternate.active { - background-color: @active-background; - text-color: @active-foreground; -} diff --git a/src/.config/awesome/configuration/tags.lua b/src/.config/awesome/configuration/tags.lua index 0d700f6..2214ff4 100644 --- a/src/.config/awesome/configuration/tags.lua +++ b/src/.config/awesome/configuration/tags.lua @@ -4,23 +4,27 @@ local gears = require('gears') local apps = require('configuration.apps') local dpi = require('beautiful').xresources.apply_dpi -local tags = { - {text = 'web', type = 'web', defaultApp = apps.default.browser, screen = 1}, - {text = 'dev', type = 'dev', defaultApp = apps.default.editor, screen = 1}, - { - text = 'term', - type = 'term', - defaultApp = apps.default.terminal, - screen = 1 - }, - {text = 'file', type = 'file', defaultApp = apps.default.files, screen = 1}, - {text = 'chat', type = 'chat', defaultApp = apps.default.social, screen = 1}, - {text = 'misc', type = 'misc', defaultApp = apps.default.rofi, screen = 1} -} +local tags = {{ + text = 'web', + screen = 1 +}, { + text = 'dev', + screen = 1 +}, { + text = 'term', + screen = 1 +}, { + text = 'file', + screen = 1 +}, { + text = 'chat', + screen = 1 +}, { + text = 'misc', + screen = 1 +}} -awful.layout.layouts = { - awful.layout.suit.tile, awful.layout.suit.max, awful.layout.suit.floating -} +awful.layout.layouts = {awful.layout.suit.tile, awful.layout.suit.max, awful.layout.suit.floating} awful.screen.connect_for_each_screen(function(s) for i, tag in pairs(tags) do diff --git a/src/.config/awesome/configuration/utils/autostart b/src/.config/awesome/configuration/utils/autostart index eb626fb..0ae739a 100755 --- a/src/.config/awesome/configuration/utils/autostart +++ b/src/.config/awesome/configuration/utils/autostart @@ -22,9 +22,6 @@ SILENT=( gnome-clocks ) -#Kill the polkit -killall xfce-polkit - # First kill lingering apps for app in "${APPS[@]}" do diff --git a/src/.config/awesome/layout/init.lua b/src/.config/awesome/layout/init.lua index 34386d5..ba93ea7 100644 --- a/src/.config/awesome/layout/init.lua +++ b/src/.config/awesome/layout/init.lua @@ -1,17 +1,20 @@ local awful = require('awful') local top_bar = require('layout.top-bar') local bottom_bar = require('layout.bottom-bar') - -local key_grabber +local beautiful = require('beautiful') -- Create a wibox for each screen and add it awful.screen.connect_for_each_screen(function(s) if s.index == 1 then s.top_bar = top_bar(s, true) - s.bottom_bar = bottom_bar(s, true) + if not beautiful.title_bar then + s.bottom_bar = bottom_bar(s, true) + end else s.top_bar = top_bar(s, false) - s.bottom_bar = bottom_bar(s, false) + if not beautiful.title_bar then + s.bottom_bar = bottom_bar(s, false) + end end end) @@ -21,7 +24,9 @@ function updateBarsVisibility() if s.selected_tag then local fullscreen = s.selected_tag.fullscreenMode s.top_bar.visible = not fullscreen - s.bottom_bar.visible = not fullscreen + if not beautiful.title_bar then + s.bottom_bar.visible = not fullscreen + end end end end diff --git a/src/.config/awesome/module/smart-borders.lua b/src/.config/awesome/module/smart-borders.lua new file mode 100644 index 0000000..e9e1cb4 --- /dev/null +++ b/src/.config/awesome/module/smart-borders.lua @@ -0,0 +1,927 @@ +local wibox = require("wibox") +local gears = require("gears") +local awful = require("awful") +local theme = require("beautiful") +local naughty = require("naughty") +local glib = require("lgi").GLib +local dpi = theme.xresources.apply_dpi + +local module = {} + +local client, screen, mouse = client, screen, mouse + +local instances = {} + +local function update_on_signal(c, signal, widget) + local sig_instances = instances[signal] + if sig_instances == nil then + sig_instances = setmetatable({}, {__mode = "k"}) + instances[signal] = sig_instances + client.connect_signal(signal, function(cl) + local widgets = sig_instances[cl] + if widgets then + for _, w in pairs(widgets) do + w.update() + end + end + end) + end + local widgets = sig_instances[c] + if widgets == nil then + widgets = setmetatable({}, {__mode = "v"}) + sig_instances[c] = widgets + end + table.insert(widgets, widget) +end + +local glib_context = function(fn) + return function(args) + glib.idle_add(glib.PRIORITY_DEFAULT_IDLE, function() + fn(args) + end) + end +end + +local function ori(pos) + if pos == "left" or pos == "right" then + return "v" + end + return "h" +end + +local function list2map(list) + local set = {} + for _, l in ipairs(list) do + set[l] = true + end + return set +end + +local function len(T) + local count = 0 + for _ in pairs(T) do + count = count + 1 + end + return count +end + +local function doubleclicked(obj) + if obj.doubleclick_timer then + obj.doubleclick_timer:stop() + obj.doubleclick_timer = nil + return true + end + obj.doubleclick_timer = gears.timer.start_new(0.3, function() + obj.doubleclick_timer = nil + end) + return false +end + +local menu_selection_symbol +local menu_marker = function(condition) + if condition then + return menu_selection_symbol + end + return "" +end + +local menu_move2tag = function(c, scr) + local list = {} + local s = scr or awful.screen.focused() + local count = 0 + for _, t in pairs(s.tags) do + if t ~= awful.screen.focused().selected_tag then + count = count + 1 + local entry = { + t.index .. ": " .. t.name .. menu_marker(t.selected) .. " ", + function() + c:move_to_tag(t) + end, + } + table.insert(list, entry) + end + end + if count > 0 then + return list + end + return nil +end + +local menu_move2screen = function(c) + local list = {} + local count = 0 + for s in screen do + local desc = next(s.outputs) or "" + if s.index ~= awful.screen.focused().index then + count = count + 1 + local entry = {s.index .. ": " .. desc .. " ", menu_move2tag(c, s)} + table.insert(list, entry) + end + end + if count > 1 then + return list + end + return nil +end + +function module.menu_client(custom_menu, c) + local list = {} + + local list_tags = menu_move2tag(c) + if list_tags then + table.insert(list, {"move to tag", list_tags}) + end + + local list_screens = menu_move2screen(c) + if list_screens then + table.insert(list, {"move to screen", list_screens}) + end + + table.insert(list, { + "fullscreen" .. menu_marker(c.fullscreen), + function() + c.fullscreen = not c.fullscreen + c:raise() + end, + }) + + table.insert(list, { + "maximize" .. menu_marker(c.maximized), + function() + c.maximized = not c.maximized + c:raise() + end, + }) + + table.insert(list, { + "master" .. menu_marker(c == awful.client.getmaster()), + function() + c:swap(awful.client.getmaster()) + end, + }) + + table.insert(list, { + "sticky" .. menu_marker(c.sticky), + function() + c.sticky = not c.sticky + end, + }) + + table.insert(list, { + "top" .. menu_marker(c.ontop), + function() + c.ontop = not c.ontop + end, + }) + + table.insert(list, { + "minimize" .. menu_marker(c.minimized), + function() + if c.minimized then + c.minimized = false + c:raise() + else + c.minimized = true + end + end, + }) + + table.insert(list, { + "floating" .. menu_marker(c.floating), + function() + c.floating = not c.floating + end, + }) + + table.insert(list, { + menu_marker(nil) .. "close", + function() + c:kill() + end, + }) + + if custom_menu and len(custom_menu) > 0 then + local function generate_menu_entry(e) + if e and type(e) == 'table' and e.text then + local text = "" + if type(e.text) == 'string' then + text = e.text + end + if type(e.text) == 'function' then + text = e.text(c) + end + return { + text, + function() + if e.func then + e.func(c) + end + end, + } + end + end + + local class = c.class or "" + for regex, entries in pairs(custom_menu) do + if string.find(class, regex) then + for _, e in ipairs(entries) do + local menu_entry = generate_menu_entry(e) + if menu_entry then + table.insert(list, menu_entry) + end + end + end + end + end + + return list +end + +local rounded_corner_shape = function(radius, position) + if position == "bottom" then + return function(cr, width, height) + gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, radius) + end + elseif position == "top" then + return function(cr, width, height) + gears.shape.partially_rounded_rect(cr, width, height, true, true, false, false, radius) + end + end + return nil +end + +local add_hot_corner = function(args) + args = args or {} + local position = args.position or "" + local placement = awful.placement[position] + if not placement then + return + end + local actions = args.buttons or {} + local s = args.screen or awful.screen.focused() + local width = args.width + local height = args.height + local color = args.color + + local corner = awful.popup({ + screen = s, + placement = placement, + ontop = true, + border_width = 0, + minimum_height = height, + maximum_height = height, + minimum_width = width, + maximum_width = width, + bg = color, + widget = wibox.widget.background, + }) + + -- this will run for every screen, so we have to make sure to only add one signal handler for every assigned signal + local must_connect_signal = (s.index == 1) + + local function signal_name(pos, action) + return "hot_corners::" .. pos .. "::" .. action + end + + local defs = { + {name = "left_click", button = 1}, + {name = "middle_click", button = 2}, + {name = "right_click", button = 3}, + {name = "wheel_up", button = 4}, + {name = "wheel_down", button = 5}, + {name = "back_click", button = 8}, + {name = "forward_click", button = 9}, + } + + local buttons = {} + for _, btn in ipairs(defs) do + if actions[btn.name] then + local signal = signal_name(position, btn.name) + table.insert(buttons, awful.button({}, btn.button, function() + awesome.emit_signal(signal) + end)) + if must_connect_signal then + awesome.connect_signal(signal, glib_context(actions[btn.name])) + end + end + end + corner:buttons(buttons) + + for _, action in pairs({"enter", "leave"}) do + if actions[action] then + local signal = signal_name(position, action) + corner:connect_signal("mouse::" .. action, function() + awesome.emit_signal(signal) + end) + if must_connect_signal then + awesome.connect_signal(signal, glib_context(actions[action])) + end + end + end +end + +local function new(config) + local cfg = config or {} + local positions = cfg.positions or {"left", "right", "top", "bottom"} + local button_positions = cfg.button_positions or {"top"} + local border_width = cfg.border_width or dpi(6) + local rounded_corner = cfg.rounded_corner or nil + + local color_normal = cfg.color_normal or "#56666f" + local color_focus = cfg.color_focus or "#a1bfcf" + local color_hover = cfg.color_hover or nil + local color_floating = cfg.color_floating or nil + local color_maximized = cfg.color_maximized or nil + + local button_size = cfg.button_size or dpi(40) + local spacing_widget = cfg.spacing_widget or nil + + local button_maximize_size = cfg.button_maximize_size or button_size + local button_minimize_size = cfg.button_minimize_size or button_size + local button_floating_size = cfg.button_floating_size or button_size + local button_top_size = cfg.button_top_size or button_size + local button_sticky_size = cfg.button_sticky_size or button_size + local button_close_size = cfg.button_close_size or button_size + + local color_maximize_normal = cfg.color_maximize_normal or "#a9dd9d" + local color_maximize_focus = cfg.color_maximize_focus or "#a9dd9d" + local color_maximize_hover = cfg.color_maximize_hover or "#c3f7b7" + + local color_minimize_normal = cfg.color_minimize_normal or "#f0eaaa" + local color_minimize_focus = cfg.color_minimize_focus or "#f0eaaa" + local color_minimize_hover = cfg.color_minimize_hover or "#f6ffea" + + local color_close_normal = cfg.color_close_normal or "#fd8489" + local color_close_focus = cfg.color_close_focus or "#fd8489" + local color_close_hover = cfg.color_close_hover or "#ff9ea3" + + local color_floating_normal = cfg.color_floating_normal or "#ddace7" + local color_floating_focus = cfg.color_floating_focus or "#ddace7" + local color_floating_hover = cfg.color_floating_hover or "#f7c6ff" + + local color_sticky_normal = cfg.color_sticky_normal or "#fb8965" + local color_sticky_focus = cfg.color_sticky_focus or "#fb8965" + local color_sticky_hover = cfg.color_sticky_hover or "#ffa37f" + + local color_top_normal = cfg.color_top_normal or "#7fc1ca" + local color_top_focus = cfg.color_top_focus or "#7fc1ca" + local color_top_hover = cfg.color_top_hover or "#99dbe4" + + local stealth = cfg.stealth or false + + local snapping = cfg.snapping or false + local snapping_center_mouse = cfg.snapping_center_mouse or false + local snapping_max_distance = cfg.snapping_max_distance or nil + + local hot_corners = cfg.hot_corners or {} + local hot_corners_color = cfg.hot_corners_color or "#00000000" + local hot_corners_width = cfg.hot_corners_width or dpi(1) + local hot_corners_height = cfg.hot_corners_height or dpi(1) + + local show_button_tooltips = cfg.show_button_tooltips or false -- tooltip might intercept mouseclicks; not recommended! + local show_title_tooltip = cfg.show_title_tooltip or false -- might fuck up sloppy mouse focus; not recommended! + + local custom_menu_entries = cfg.custom_menu_entries or {} + menu_selection_symbol = cfg.menu_selection_symbol or " ✔" + + local layout = cfg.layout or "fixed" -- "fixed" | "ratio" + local button_ratio = cfg.button_ratio or 0.2 + + local align_horizontal = cfg.align_horizontal or "right" -- "left" | "center" | "right" + local align_vertical = cfg.align_vertical or "center" -- "top" | "center" | "bottom" + local buttons = cfg.buttons or {"floating", "minimize", "maximize", "close"} + + local button_left_click = cfg.button_left_click or function(c) + if c.maximized then + c.maximized = false + end + c:emit_signal("request::activate", "mouse_click", {raise = true}) + awful.mouse.client.move(c) + end + local button_double_click = cfg.button_double_click or function(c) + c.maximized = not c.maximized + end + local button_middle_click = cfg.middle_click or function(c) + c:emit_signal("request::activate", "mouse_click", {raise = true}) + awful.mouse.client.resize(c) + end + local button_right_click = cfg.right_click or function(c) + if c.client_menu then + c.client_menu:hide() + end + c.client_menu = awful.menu(module.menu_client(custom_menu_entries, c)) + c.client_menu:toggle() + end + + local resize_factor = cfg.resize_factor or 0.01 + local button_wheel_up = cfg.button_wheel_up or function(_) + awful.client.incwfact(resize_factor) + end + local button_wheel_down = cfg.button_wheel_down or function(_) + awful.client.incwfact(-1 * resize_factor) + end + local button_back = cfg.button_back or function(_) + awful.client.swap.byidx(-1) + end + local button_forward = cfg.button_forward or function(_) + awful.client.swap.byidx(1) + end + + local button_funcs = {} + + local left_click_function = function(c) + if doubleclicked(c) then + button_double_click(c) + else + button_left_click(c) + end + end + + client.connect_signal("smart_borders::left_click", left_click_function) + client.connect_signal("smart_borders::middle_click", button_middle_click) + client.connect_signal("smart_borders::right_click", button_right_click) + client.connect_signal("smart_borders::wheel_up", button_wheel_up) + client.connect_signal("smart_borders::wheel_down", button_wheel_down) + client.connect_signal("smart_borders::back_click", button_back) + client.connect_signal("smart_borders::forward_click", button_forward) + + button_funcs[1] = function(c) + c:emit_signal("smart_borders::left_click") + end + + button_funcs[2] = function(c) + c:emit_signal("smart_borders::middle_click") + end + button_funcs[3] = function(c) + c:emit_signal("smart_borders::right_click") + end + button_funcs[4] = function(c) + c:emit_signal("smart_borders::wheel_up") + end + button_funcs[5] = function(c) + c:emit_signal("smart_borders::wheel_down") + end + button_funcs[8] = function(c) + c:emit_signal("smart_borders::back_click") + end + button_funcs[9] = function(c) + c:emit_signal("smart_borders::forward_click") + end + local function handle_button_press(c, button) + local func = button_funcs[button] + if func then + func(c) + end + end + + local button_definitions = {} + button_definitions["maximize"] = { + name = "maximize", + color_normal = color_maximize_normal, + color_focus = color_maximize_focus, + color_hover = color_maximize_hover, + button_size = button_maximize_size, + action = function(cl) + cl.maximized = not cl.maximized + end, + } + + button_definitions["minimize"] = { + name = "minimize", + color_normal = color_minimize_normal, + color_focus = color_minimize_focus, + color_hover = color_minimize_hover, + button_size = button_minimize_size, + action = function(cl) + -- for whatever reason setting minimized does not work without wrapping it. + awful.spawn.easy_async_with_shell("sleep 0", function() + cl.minimized = true + end) + end, + } + + button_definitions["floating"] = { + name = "floating", + color_normal = color_floating_normal, + color_focus = color_floating_focus, + color_hover = color_floating_hover, + button_size = button_floating_size, + action = function(cl) + cl.floating = not cl.floating + end, + } + + button_definitions["close"] = { + name = "close", + color_normal = color_close_normal, + color_focus = color_close_focus, + color_hover = color_close_hover, + button_size = button_close_size, + action = function(cl) + cl:kill() + end, + } + + button_definitions["sticky"] = { + name = "sticky", + color_normal = color_sticky_normal, + color_focus = color_sticky_focus, + color_hover = color_sticky_hover, + button_size = button_sticky_size, + action = function(cl) + cl.sticky = not cl.sticky + end, + } + + button_definitions["top"] = { + name = "top", + color_normal = color_top_normal, + color_focus = color_top_focus, + color_hover = color_top_hover, + button_size = button_top_size, + action = function(cl) + cl.ontop = not cl.ontop + end, + } + + for s in screen do + for pos, buttons in pairs(hot_corners) do + add_hot_corner({ + buttons = buttons, + screen = s, + position = pos, + color = hot_corners_color, + width = hot_corners_width, + height = hot_corners_height, + }) + end + end + + if layout ~= "fixed" and layout ~= "ratio" then + layout = "fixed" + end + + if type(button_positions) == "string" then + button_positions = {button_positions} + end + + if snapping then + if awful and awful.mouse and awful.mouse.append_global_mousebindings then + local mouse_closest_client = function() + local s = awful.screen.focused() + local m_x = mouse.coords().x + local m_y = mouse.coords().y + + local closest_distance, closest_c + + for _, c in ipairs(s.all_clients) do + if c:isvisible() then + local x = c.x + (c.width / 2) + local y = c.y + (c.height / 2) + local dx = math.max(math.abs(m_x - x) - (c.width / 2), 0) + local dy = math.max(math.abs(m_y - y) - (c.height / 2), 0) + local distance = math.sqrt(dx * dx + dy * dy) + + if (not snapping_max_distance or (distance <= snapping_max_distance)) and + (not closest_distance or distance < closest_distance) then + closest_distance = distance + closest_c = c + end + end + end + + if closest_c and closest_c.valid then + closest_c:emit_signal("request::activate", "smart_borders::snapping", {raise = true}) + end + + return closest_c + end + + awful.mouse.append_global_mousebindings({ + awful.button({}, 1, function() + local c = mouse_closest_client() + if c then + if snapping_center_mouse then + mouse.coords {x = c.x + c.width / 2, y = c.y + c.height / 2} + end + left_click_function(c) + end + end), + awful.button({}, 2, function() + local c = mouse_closest_client() + if c then + button_middle_click(c) + end + end), + awful.button({}, 3, function() + local c = mouse_closest_client() + if c then + button_right_click(c) + end + end), + awful.button({}, 4, function() + local c = mouse_closest_client() + if c then + button_wheel_up(c) + end + end), + awful.button({}, 5, function() + local c = mouse_closest_client() + if c then + button_wheel_down(c) + end + end), + awful.button({}, 8, function() + local c = mouse_closest_client() + if c then + button_back(c) + end + end), + awful.button({}, 9, function() + local c = mouse_closest_client() + if c then + button_forward(c) + end + end), + }) + else + naughty.notify({title = "smart_borders", text = "snapping requires awesomewm git version!", timeout = 0}) + end + end + + local smart_border_titlebars = function(c) + local button_widgets = {} + + local border_bg = wibox.widget.base.make_widget_declarative( + { + {widget = wibox.container.margin}, + id = "border_bg", + bg = color_normal, + widget = wibox.container.background, + }) + + border_bg:connect_signal("button::press", function(_, _, _, button) + handle_button_press(c, button) + end) + + if color_hover then + border_bg:connect_signal("mouse::enter", function() + border_bg.bg = color_hover + end) + border_bg:connect_signal("mouse::leave", function() + if client.focus == c then + border_bg.bg = color_focus + else + border_bg.bg = color_normal + end + end) + end + + local border_expander, border_expander_center + + if layout == "fixed" then + border_expander_center = wibox.widget.base.make_widget_declarative( + { + fill_vertical = true, + fill_horizontal = true, + content_fill_vertical = true, + content_fill_horizontal = true, + border_bg, + widget = wibox.container.place, + }) + border_expander = wibox.widget.base.make_widget_declarative( + { + {layout = wibox.layout.fixed.horizontal}, + border_bg, + {layout = wibox.layout.fixed.horizontal}, + widget = wibox.layout.align.horizontal, + }) + end + + local _button_positions = list2map(button_positions) + + for _, pos in pairs(positions) do + local tb = awful.titlebar(c, {size = border_width, position = pos, bg = "#00000000"}) + + local btn_layout + if layout == "fixed" then + btn_layout = ori(pos) == "v" and wibox.layout.fixed.vertical or wibox.layout.fixed.horizontal + end + if layout == "ratio" then + btn_layout = ori(pos) == "v" and wibox.layout.ratio.vertical or wibox.layout.ratio.horizontal + end + + if _button_positions[pos] then + -- border with buttons + local button_layout = wibox.widget.base.make_widget_declarative( + {id = "button_layout", spacing_widget = spacing_widget, layout = btn_layout}) + + local titlebar_widget + + if layout == "fixed" then + if ori(pos) == "v" then + local expander = align_vertical == "center" and border_expander_center or border_expander + titlebar_widget = wibox.widget.base.make_widget_declarative( + { + align_vertical == "top" and button_layout or expander, + align_vertical == "center" and button_layout or expander, + align_vertical == "bottom" and button_layout or expander, + expand = align_vertical == "center" and "none" or "inside", + layout = wibox.layout.align.vertical, + }) + else + local expander = align_horizontal == "center" and border_expander_center or border_expander + titlebar_widget = wibox.widget.base.make_widget_declarative( + { + align_horizontal == "left" and button_layout or expander, + align_horizontal == "center" and button_layout or expander, + align_horizontal == "right" and button_layout or expander, + expand = align_horizontal == "center" and "none" or "inside", + layout = wibox.layout.align.horizontal, + }) + end + end + + if layout == "ratio" then + titlebar_widget = wibox.widget.base.make_widget_declarative( + {button_layout, id = "titlebar_widget", bg = color_normal, widget = wibox.container.background}) + end + + tb:setup{ + titlebar_widget, + bg = "#00000000", + shape = rounded_corner and rounded_corner_shape(rounded_corner, pos) or nil, + widget = wibox.container.background(), + } + + local ratio_button_layout = wibox.widget.base.make_widget_declarative( + { + homogeneous = layout == "ratio" and true or false, + expand = true, + layout = ori(pos) == "h" and wibox.layout.grid.horizontal or wibox.layout.grid.vertical, + }) + + local list_of_buttons = {} + for _, btn in pairs(buttons) do + local b = button_definitions[btn] + + if not b then + -- custom button + b = {} + b.name = cfg["button_" .. btn .. "_name"] or btn + b.button_size = cfg["button_" .. btn .. "_size"] or button_size + b.color_focus = cfg["color_" .. btn .. "_focus"] or "#ff00ff" + b.color_normal = cfg["color_" .. btn .. "_normal"] or "#ff00ff" + b.color_hover = cfg["color_" .. btn .. "_hover"] or "#ff1aff" + b.action = cfg["button_" .. btn .. "_function"] or nil + end + + local button_widget = wibox.widget.base.make_widget_declarative( + { + {widget = wibox.container.margin}, + id = b.name, + forced_width = ori(pos) == "h" and b.button_size or nil, + forced_height = ori(pos) == "v" and b.button_size or nil, + bg = b.color_normal, + widget = wibox.container.background, + }) + + if show_button_tooltips then + awful.tooltip { + objects = {button_widget}, + mode = 'outside', + timer_function = function() + return b.name + end, + } + end + + button_widget:connect_signal("mouse::enter", function() + button_widget.bg = b.color_hover + end) + + button_widget:connect_signal("mouse::leave", function() + if stealth then + if c == client.focus then + button_widget.bg = color_focus + else + button_widget.bg = color_normal + end + else + if c == client.focus then + button_widget.bg = b.color_focus + else + button_widget.bg = b.color_normal + end + end + end) + + button_widget:connect_signal("button::press", function(_, _, _, button) + if button == 1 then + if b.action then + b.action(c) + end + else + handle_button_press(c, button) + end + end) + + table.insert(list_of_buttons, button_widget) + + button_widgets[b.name] = button_widget + + local update = function() + if client.focus == c then + button_widget.bg = stealth and color_focus or b.color_focus + return + end + button_widget.bg = stealth and color_normal or b.color_normal + end + + button_widget.update = update + + update_on_signal(c, "focus", button_widget) + update_on_signal(c, "unfocus", button_widget) + end + + if layout == "ratio" then + ratio_button_layout:set_children(list_of_buttons) + local ratio_children = {} + table.insert(ratio_children, border_bg) + table.insert(ratio_children, ratio_button_layout) + table.insert(ratio_children, border_bg) + button_layout:set_children(ratio_children) + + if (ori(pos) == "h" and align_horizontal == "left") or (ori(pos) == "v" and align_vertical == "top") then + button_layout:ajust_ratio(2, 0, button_ratio, 1.0 - button_ratio) + end + if (ori(pos) == "h" and align_horizontal == "right") or + (ori(pos) == "v" and align_vertical == "bottom") then + button_layout:ajust_ratio(2, 1.0 - button_ratio, button_ratio, 0) + end + if (ori(pos) == "h" and align_horizontal == "center") or + (ori(pos) == "v" and align_vertical == "center") then + local side_ratio = (1.0 - button_ratio) / 2 + button_layout:ajust_ratio(2, side_ratio, button_ratio, side_ratio) + end + end + + if layout == "fixed" then + button_layout:set_children(list_of_buttons) + end + else + tb:setup{ + border_bg, + bg = "#00000000", + shape = rounded_corner and rounded_corner_shape(rounded_corner, pos) or nil, + widget = wibox.container.background, + } + end + end + + -- show client title tooltip on border hover + if show_title_tooltip then + awful.tooltip { + objects = {border_bg}, + timer_function = function() + return c.name + end, + } + end + + local update_border = function() + if client.focus == c then + border_bg.bg = color_focus + return + end + + if color_maximized and c.maximized then + border_bg.bg = color_maximized + return + end + + if color_floating and c.floating then + border_bg.bg = color_floating + return + end + + border_bg.bg = color_normal + end + + border_bg.update = update_border + + update_on_signal(c, "focus", border_bg) + update_on_signal(c, "unfocus", border_bg) + update_on_signal(c, "property::maximized", border_bg) + update_on_signal(c, "property::floating", border_bg) + end + + client.connect_signal("request::tag", smart_border_titlebars) +end + +return setmetatable(module, { + __call = function(_, ...) + new(...) + return module + end, +}) diff --git a/src/.config/awesome/rc.lua b/src/.config/awesome/rc.lua index d8fa1b8..4fdfe2d 100644 --- a/src/.config/awesome/rc.lua +++ b/src/.config/awesome/rc.lua @@ -2,6 +2,7 @@ require('awful.autofocus') local gears = require('gears') local awful = require('awful') local naughty = require('naughty') +local dpi = require('beautiful').xresources.apply_dpi local beautiful = require('beautiful') -- Theme @@ -36,27 +37,36 @@ _G.client.connect_signal('manage', function(c) end) -- Move cursor to focused window -function move_mouse_onto_focused_client() - local c = client.focus - gears.timer( { timeout = 0.1, - autostart = true, - single_shot = true, - callback = function() - if mouse.object_under_pointer() ~= c then - local geometry = c:geometry() - local x = geometry.x + geometry.width/2 - local y = geometry.y + geometry.height/2 - mouse.coords({x = x, y = y}, true) - end - end } ) +function Move_mouse_onto_focused_client() + local c = _G.client.focus + gears.timer({ + timeout = 0.1, + autostart = true, + single_shot = true, + callback = function() + if _G.mouse.object_under_pointer() ~= c then + local geometry = c:geometry() + local x = geometry.x + geometry.width / 2 + local y = geometry.y + geometry.height / 2 + _G.mouse.coords({ + x = x, + y = y + }, true) + end + end + }) end -client.connect_signal("focus", move_mouse_onto_focused_client) -client.connect_signal("swapped", move_mouse_onto_focused_client) +if beautiful.cursor_warp then + _G.client.connect_signal("focus", Move_mouse_onto_focused_client) + _G.client.connect_signal("swapped", Move_mouse_onto_focused_client) +end -- Enable sloppy focus, so that focus follows mouse. _G.client.connect_signal('mouse::enter', function(c) - c:emit_signal('request::activate', 'mouse_enter', {raise = true}) + c:emit_signal('request::activate', 'mouse_enter', { + raise = true + }) end) -- Make the focused window have a glowing border @@ -67,3 +77,16 @@ _G.client.connect_signal('unfocus', function(c) c.border_color = beautiful.border_normal end) +if beautiful.title_bar then + -- Enable smart borders (https://github.com/intrntbrn/smart_borders) + require('module.smart-borders') { + show_button_tooltips = true, + border_width = dpi(16), + rounded_corner = dpi(0), + positions = {"bottom"}, + button_positions = {"bottom"}, + button_size = dpi(40), + color_focus = beautiful.primary.hue_200, + color_normal = beautiful.primary.hue_100 + } +end diff --git a/src/.config/awesome/theme/theme.lua b/src/.config/awesome/theme/theme.lua index 4065b23..d2be1d0 100644 --- a/src/.config/awesome/theme/theme.lua +++ b/src/.config/awesome/theme/theme.lua @@ -35,8 +35,8 @@ local awesome_overrides = function(theme) -- Tasklist theme.tasklist_font = theme.font - theme.tasklist_bg_normal = theme.primary.hue_200 - theme.tasklist_bg_focus = theme.primary.hue_100 + theme.tasklist_bg_normal = theme.primary.hue_100 + theme.tasklist_bg_focus = theme.primary.hue_200 theme.tasklist_bg_urgent = theme.primary.hue_200 -- Icons @@ -49,5 +49,7 @@ local awesome_overrides = function(theme) theme.border_normal = theme.primary.hue_100 theme.gap_single_client = false theme.bg_normal = theme.primary.hue_100 + theme.cursor_warp = true + theme.title_bar = false end return {theme = theme, awesome_overrides = awesome_overrides} diff --git a/src/.config/kitty/gruvbox-material.conf b/src/.config/kitty/gruvbox-material.conf index 62757db..6040345 100644 --- a/src/.config/kitty/gruvbox-material.conf +++ b/src/.config/kitty/gruvbox-material.conf @@ -3,7 +3,7 @@ # Colors are different than original, just to match my taste :P foreground #d6d6d6 -background #282828 +background #282827 # black color0 #282828 diff --git a/src/.config/nvim/init.vim b/src/.config/nvim/init.vim index 5148440..77e23cb 100644 --- a/src/.config/nvim/init.vim +++ b/src/.config/nvim/init.vim @@ -169,7 +169,7 @@ hi Normal ctermbg=230 set updatetime=100 set mouse=a set noswapfile -set colorcolumn=80 +set colorcolumn=90 "" Set smart line numbers set number relativenumber diff --git a/src/.config/qtile/__pycache__/config.cpython-38.pyc b/src/.config/qtile/__pycache__/config.cpython-38.pyc deleted file mode 100644 index 598658346991a7cbed99d31c70a96bcf431b616e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5777 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 diff --git a/src/.config/qtile/autostart.sh b/src/.config/qtile/autostart.sh deleted file mode 100755 index db6b643..0000000 --- a/src/.config/qtile/autostart.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -compton & -nitrogen --restore & -nm-applet & - diff --git a/src/.config/qtile/config.py b/src/.config/qtile/config.py deleted file mode 100644 index 37ffaa6..0000000 --- a/src/.config/qtile/config.py +++ /dev/null @@ -1,289 +0,0 @@ -import os -import subprocess - -from typing import List - -from libqtile import bar, layout, widget, hook -from libqtile.config import Click, Drag, Group, Key, Screen, ScratchPad, DropDown -from libqtile.lazy import lazy -from libqtile.utils import guess_terminal - -mod = "mod4" -terminal = "kitty" -rofi = """ -env /usr/bin/rofi -show drun -display-drun -run-command -"/bin/bash -c -i 'shopt -s expand_aliases; {cmd}'" -""" -config_directory = os.path.expanduser("~/.config/qtile") - -BLACK = "#212121" -LIGHT_GREY = "#3c3c3c" -GREY = "#333333" -DARK_GREY = "#1a1a1a" -YELLOW = "#e1be7f" -GREEN = "#92c96a" -BLUE = "#66aeea" -RED = "#f35a5a" -CYAN = "#4083bc" -MAGENTA = "#c57cda" -ORANGE = "#cd996a" -WHITE = "#d6d6d6" - -keys = [ - # Switch between windows in current stack pane - Key([mod], "k", lazy.layout.down(), desc="Move focus down in stack pane"), - Key([mod], "j", lazy.layout.up(), desc="Move focus up in stack pane"), - # Move windows up or down in current stack - Key( - [mod, "control"], - "k", - lazy.layout.shuffle_down(), - desc="Move window down in current stack ", - ), - Key( - [mod, "control"], - "j", - lazy.layout.shuffle_up(), - desc="Move window up in current stack ", - ), - Key(["mod1"], "Tab", lazy.layout.next(), desc="Move focus to next window in group"), - Key( - ["mod1", "shift"], - "Tab", - lazy.layout.previous(), - desc="Move focus to previous window in group", - ), - # Toggle between split and unsplit sides of stack. - # Split = all windows displayed - # Unsplit = 1 window displayed, like Max layout, but still with - # multiple stack panes - Key( - [mod, "shift"], - "Return", - lazy.layout.toggle_split(), - desc="Toggle between split and unsplit sides of stack", - ), - Key([mod], "Return", lazy.spawn(terminal), desc="Launch terminal"), - # Toggle between different layouts as defined below - Key([mod], "Tab", lazy.next_layout(), desc="Toggle between layouts"), - Key([mod, "shift"], "q", lazy.window.kill(), desc="Kill focused window"), - Key([mod, "shift"], "c", lazy.window.kill(), desc="Kill focused window"), - Key([mod, "control"], "r", lazy.restart(), desc="Restart qtile"), - Key([mod, "control"], "q", lazy.shutdown(), desc="Shutdown qtile"), - Key([mod], "r", lazy.spawn(rofi), desc="Launch Rofi"), - Key( - [mod], - "p", - lazy.spawn(f"{config_directory}/src/rofi-power.sh"), - desc="Launch rofi power options", - ), - # Volume Control - Key([], "XF86AudioRaiseVolume", lazy.spawn("amixer -c 0 -q set Master 2dB+")), - Key([], "XF86AudioLowerVolume", lazy.spawn("amixer -c 0 -q set Master 2dB-")), - Key([], "XF86AudioMute", lazy.spawn("amixer -D pulse set Master 1+ toggle")), - Key([mod], "equal", lazy.spawn("amixer -c 0 -q set Master 2dB+")), - Key([mod], "minus", lazy.spawn("amixer -c 0 -q set Master 2dB-")), - # Window management - Key([mod], "h", lazy.layout.shrink_main(), desc="Expand master (MonadTall)"), - Key([mod], "l", lazy.layout.grow_main(), desc="Shrink master (MonadTall)"), - Key( - [mod, "shift"], - "h", - lazy.layout.swap_left(), - desc="Move window to left (MonadTall)", - ), - Key( - [mod, "shift"], - "l", - lazy.layout.swap_right(), - desc="Moce window to right (MonadTall)", - ), - Key([mod], "k", lazy.group["scratchpad"].dropdown_toggle("dropdown_terminal")), - Key([mod], "Left", lazy.screen.prev_group(skip_managed=True)), - Key([mod], "Right", lazy.screen.next_group(skip_managed=True)), -] - -group_names = ( - ("web", {"layout": "max"}), - ("dev", {"layout": "monadtall"}), - ("term", {"layout": "monadtall"}), - ("file", {"layout": "monadtall"}), - ("chat", {"layout": "monadtall"}), - ("misc", {"layout": "monadtall"}), -) - -groups = [Group(name, **kwargs) for name, kwargs in group_names] - -# Create a dropdown terminal -groups.append( - ScratchPad( - "scratchpad", - [ - DropDown( - "dropdown_terminal", - f"{terminal} -T dropdown_terminal", - on_focus_lost_hide=False, - opacity=1, - width=0.999, - x=0.0005, - height=0.55, - ), - ], - ), -) - -for i, (name, kwargs) in enumerate(group_names, 1): - # Switch to another group - keys.append(Key([mod], str(i), lazy.group[name].toscreen(toggle=False))) - # Switch to last group - keys.append(Key([mod], "Escape", lazy.screen.toggle_group())) - # Send window to group - keys.append(Key([mod, "shift"], str(i), lazy.window.togroup(name))) - -layout_theme = { - "border_width": 2, - "margin": 0, - "single_border_width": 0, - "border_focus": GREEN, - "border_normal": BLACK, -} - -layouts = [ - layout.Max(**layout_theme), - # layout.Stack(**layout_theme, num_stacks=2), - # Try more layouts by unleashing below layouts. - # layout.Bsp(**layout_theme), - # layout.Columns(**layout_theme), - # layout.Matrix(**layout_theme), - layout.MonadTall(**layout_theme), - # layout.MonadWide(**layout_theme), - # layout.RatioTile(**layout_theme), - # layout.Tile(**layout_theme), - # layout.TreeTab(**layout_theme), - # layout.VerticalTile(**layout_theme), - # layout.Zoomy(**layout_theme), - layout.Floating( - **layout_theme, - float_rules=[ - # Run the utility of `xprop` to see the wm class and name of an X client. - {"wmclass": "confirm"}, - {"wmclass": "dialog"}, - {"wmclass": "download"}, - {"wmclass": "error"}, - {"wmclass": "file_progress"}, - {"wmclass": "notification"}, - {"wmclass": "splash"}, - {"wmclass": "toolbar"}, - {"wmclass": "confirmreset"}, # gitk - {"wmclass": "makebranch"}, # gitk - {"wmclass": "maketag"}, # gitk - {"wname": "branchdialog"}, # gitk - {"wname": "pinentry"}, # GPG key password entry - {"wmclass": "ssh-askpass"}, # ssh-askpass - ], - ), -] - -widget_defaults = dict( - font="Ubuntu", - fontsize=12, - padding=3, -) -extension_defaults = widget_defaults.copy() - -screens = [ - Screen( - top=bar.Bar( - [ - widget.GroupBox( - margin_y=3, - margin_x=0, - padding_y=5, - padding_x=3, - disable_drag=True, - active=BLUE, - inactive=WHITE, - rounded=False, - highlight_color=BLUE, - highlight_method="block", - this_current_screen_border=BLUE, - this_screen_border=GREEN, - block_highlight_text_color=BLACK, - other_current_screen_border=GREEN, - other_screen_border=BLACK, - urgent_alert_method="text", - urgent_text=RED, - ), - widget.Prompt(), - widget.Spacer(), - widget.Systray(), - widget.Clock(format="%m/%d %a %I:%M"), - widget.Sep(), - widget.CPU(format="﬙ {load_percent}%"), - widget.Sep(), - widget.Memory(), - widget.Volume(), - widget.Battery(format="{char} {percent:2.0%}", notify_below=20), - widget.CurrentLayoutIcon(scale=0.65), - ], - 20, - ), - bottom=bar.Bar( - [ - widget.TaskList( - borderwidth=0, - spacing=0, - highlight_method="block", - background=GREY, - border=BLACK, - markup_floating="{}", - markup_minimized="{}", - icon_size=0, - margin=0, - rounded=False, - title_width_method="uniform", - ), - ], - 18, - ), - ), -] - -# Drag floating layouts. -mouse = [ - Drag( - [mod], - "Button1", - lazy.window.set_position_floating(), - start=lazy.window.get_position(), - ), - Drag( - [mod], "Button3", lazy.window.set_size_floating(), start=lazy.window.get_size() - ), - Click([mod], "Button2", lazy.window.toggle_floating()), -] - -dgroups_key_binder = None -dgroups_app_rules = [] # type: List -main = None # WARNING: this is deprecated and will be removed soon -follow_mouse_focus = True -bring_front_click = False -cursor_warp = False -auto_fullscreen = True -focus_on_window_activation = "smart" - - -@hook.subscribe.startup -def autostart(): - subprocess.call([f"{config_directory}/autostart.sh"]) - - -# XXX: Gasp! We're lying here. In fact, nobody really uses or cares about this -# string besides java UI toolkits; you can see several discussions on the -# mailing lists, GitHub issues, and other WM documentation that suggest setting -# this string if your java app doesn't work correctly. We may as well just lie -# and say that we're a working one by default. -# -# We choose LG3D to maximize irony: it is a 3D non-reparenting WM written in -# java that happens to be on java's whitelist. -wmname = "LG3D" diff --git a/src/.config/qtile/requirements.txt b/src/.config/qtile/requirements.txt deleted file mode 100644 index 5c92057..0000000 --- a/src/.config/qtile/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -qtile==0.16.2.dev209+gd5848931 -psutil==5.8.0 - diff --git a/src/.config/qtile/src/rofi-power.sh b/src/.config/qtile/src/rofi-power.sh deleted file mode 100755 index b626d30..0000000 --- a/src/.config/qtile/src/rofi-power.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash - -# rofi-power -# Use rofi to call systemctl for shutdown, reboot, etc - -# 2016 Oliver Kraitschy - http://okraits.de - -OPTIONS="Poweroff\nExit\nReboot\nSuspend\nHibernate" - -config_path=$(dirname "$0") - -LAUNCHER="rofi -dmenu -i" -USE_LOCKER="false" -LOCKER="i3lock-fancy" - -option=`echo -e $OPTIONS | $LAUNCHER | awk '{print $1}' | tr -d '\r\n'` -case $option in - Exit) - kill -9 -1 - ;; - Reboot) - systemctl reboot - ;; - Poweroff) - systemctl poweroff - ;; - Suspend) - $($USE_LOCKER) && "$LOCKER"; systemctl suspend - ;; - Hibernate) - $($USE_LOCKER) && "$LOCKER"; systemctl hibernate - ;; - *) - ;; -esac diff --git a/src/.config/sublime-text-3/Packages/User/CP-build-system.sublime-build b/src/.config/sublime-text-3/Packages/User/CP-build-system.sublime-build index 0dd82fc..2543eb2 100755 --- a/src/.config/sublime-text-3/Packages/User/CP-build-system.sublime-build +++ b/src/.config/sublime-text-3/Packages/User/CP-build-system.sublime-build @@ -5,7 +5,7 @@ "auto_close": false, "timeit": true, - "post_window_hooks": [["carry_file_to_pane", { "direction": "down" }]], + "post_window_hooks": [["carry_file_to_pane", { "direction": "right" }]], "focus": false, "cmd": [ diff --git a/src/.config/sublime-text-3/Packages/User/SublimeAStyleFormatter.sublime-settings b/src/.config/sublime-text-3/Packages/User/SublimeAStyleFormatter.sublime-settings new file mode 100755 index 0000000..756059e --- /dev/null +++ b/src/.config/sublime-text-3/Packages/User/SublimeAStyleFormatter.sublime-settings @@ -0,0 +1,3 @@ +{ + "autoformat_on_save": "true", +} diff --git a/src/.config/sublime-text-3/Packages/User/Terminus/Terminus.hidden-color-scheme b/src/.config/sublime-text-3/Packages/User/Terminus/Terminus.hidden-color-scheme index 38aaaf1..d65e7cc 100644 --- a/src/.config/sublime-text-3/Packages/User/Terminus/Terminus.hidden-color-scheme +++ b/src/.config/sublime-text-3/Packages/User/Terminus/Terminus.hidden-color-scheme @@ -1,27 +1,27 @@ { - "name": "Terminus", - "variables": { - "blue": "#01a0e4", - "light_green": "#3a3432", - "light_brown": "#4a4543", - "green": "#01a252", - "light_blue": "#807d7c", - "cyan": "#b5e4f4", - "light_red": "#e8bbd0", - "black": "#090300", - "light_white": "#f7f7f8", - "magenta": "#a16a94", - "background": "#f7f7f8", - "light_cyan": "#cdab53", - "caret": "#4a4543", - "brown": "#fded02", - "white": "#a5a2a2", - "light_black": "#5c5855", - "light_magenta": "#d6d5d4", - "red": "#db2d20", - "foreground": "#4a4543" - }, "globals": { "background": "#f7f7f7" - } + }, + "variables": { + "white": "#a5a2a2", + "blue": "#01a0e4", + "light_brown": "#4a4543", + "light_red": "#e8bbd0", + "magenta": "#a16a94", + "light_white": "#f7f7f8", + "green": "#01a252", + "light_magenta": "#d6d5d4", + "background": "#f7f7f8", + "light_black": "#5c5855", + "foreground": "#4a4543", + "red": "#db2d20", + "light_green": "#3a3432", + "cyan": "#b5e4f4", + "black": "#090300", + "brown": "#fded02", + "light_cyan": "#cdab53", + "caret": "#4a4543", + "light_blue": "#807d7c" + }, + "name": "Terminus" } \ No newline at end of file diff --git a/src/.config/zsh/Makefile b/src/.config/zsh/Makefile index dd01458..e59ffb2 100644 --- a/src/.config/zsh/Makefile +++ b/src/.config/zsh/Makefile @@ -1,5 +1,5 @@ .PHONY: all -all: autosuggestions syntax-highlighting tab-completions +all: autosuggestions syntax-highlighting tab-completions z-jump autosuggestions: git clone https://github.com/zsh-users/zsh-autosuggestions ~/.config/zsh/plugins/zsh-autosuggestions @@ -8,4 +8,4 @@ syntax-highlighting: git clone https://github.com/zdharma/fast-syntax-highlighting ~/.config/zsh/plugins/fast-syntax-highlighting tab-completions: - git clone https://github.com/zsh-users/zsh-completions ~/.config/zsh/plugins/zsh-completions \ No newline at end of file + git clone https://github.com/zsh-users/zsh-completions ~/.config/zsh/plugins/zsh-completions diff --git a/src/.gitconfig b/src/.gitconfig index c8841cd..d25e77f 100644 --- a/src/.gitconfig +++ b/src/.gitconfig @@ -25,7 +25,3 @@ [credential "https://github.com"] helper = !gh auth git-credential -; global hooks -[core] - hooksPath = /home/purhan/scripts/hooks/git/ - diff --git a/src/.xprofile b/src/.xprofile index 0b53920..0136343 100755 --- a/src/.xprofile +++ b/src/.xprofile @@ -14,6 +14,6 @@ xinput set-prop "ETPS/2 Elantech Touchpad" "libinput Tapping Enabled" 1 # Turn off laptop screen when monitor connected hdmi_connected=$(xrandr | grep ' connected' | grep 'HDMI' | wc -l) if [ "$hdmi_connected" -eq 1 ]; then - eval "~/scripts/monitor_setups/monitor_only" + eval "~/scripts/monitor_setups/laptop_left_primary_monitor_right" fi diff --git a/src/scripts/Makefile b/src/scripts/Makefile index 8ddd7f7..30333a1 100644 --- a/src/scripts/Makefile +++ b/src/scripts/Makefile @@ -17,6 +17,7 @@ apt = firefox \ vim \ neovim \ awesome \ + i3lock-fancy \ python3-pip \ python3-venv \ npm \ @@ -25,6 +26,8 @@ apt = firefox \ zsh \ stow \ arandr \ + xdotool \ + polkit-gnome-authentication-agent-1 \ gh # Packages to be installed as snaps diff --git a/src/scripts/hooks/git/pre-push b/src/scripts/hooks/git/pre-push deleted file mode 100755 index 100333e..0000000 --- a/src/scripts/hooks/git/pre-push +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -current_branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,') -protected_branches="main master dev" - -if [[ "$protected_branches" == *"$current_branch"* ]]; -then - read -p "You're about to push master, is that what you intended? [y|N] " -n 1 -r < /dev/tty - echo - if echo $REPLY | grep -E '^[Yy]$' > /dev/null - then - exit 0 # push will execute - fi - exit 1 # push will not execute -else - exit 0 # push will execute -fi