added dynamic status icons for almost all the modules, also alpha patch for dwm and more
This commit is contained in:
parent
34e06fcc7f
commit
057c11dc56
22 changed files with 601 additions and 799 deletions
62
user/.bashrc
62
user/.bashrc
|
@ -233,5 +233,63 @@ alias \
|
||||||
wfi-off="nmcli radio wifi off" \
|
wfi-off="nmcli radio wifi off" \
|
||||||
blt="bluetoothctl"
|
blt="bluetoothctl"
|
||||||
|
|
||||||
### SETTING THE STARSHIP PROMPT ###
|
# get current branch in git repo
|
||||||
eval "$(starship init bash)"
|
function parse_git_branch() {
|
||||||
|
BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
|
||||||
|
if [ ! "${BRANCH}" == "" ]
|
||||||
|
then
|
||||||
|
STAT=`parse_git_dirty`
|
||||||
|
echo "[${BRANCH}${STAT}]"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# get current branch in git repo
|
||||||
|
function parse_git_branch() {
|
||||||
|
BRANCH=`git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
|
||||||
|
if [ ! "${BRANCH}" == "" ]
|
||||||
|
then
|
||||||
|
STAT=`parse_git_dirty`
|
||||||
|
echo "[${BRANCH}${STAT}]"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# get current status of git repo
|
||||||
|
function parse_git_dirty {
|
||||||
|
status=`git status 2>&1 | tee`
|
||||||
|
dirty=`echo -n "${status}" 2> /dev/null | grep "modified:" &> /dev/null; echo "$?"`
|
||||||
|
untracked=`echo -n "${status}" 2> /dev/null | grep "Untracked files" &> /dev/null; echo "$?"`
|
||||||
|
ahead=`echo -n "${status}" 2> /dev/null | grep "Your branch is ahead of" &> /dev/null; echo "$?"`
|
||||||
|
newfile=`echo -n "${status}" 2> /dev/null | grep "new file:" &> /dev/null; echo "$?"`
|
||||||
|
renamed=`echo -n "${status}" 2> /dev/null | grep "renamed:" &> /dev/null; echo "$?"`
|
||||||
|
deleted=`echo -n "${status}" 2> /dev/null | grep "deleted:" &> /dev/null; echo "$?"`
|
||||||
|
bits=''
|
||||||
|
if [ "${renamed}" == "0" ]; then
|
||||||
|
bits=">${bits}"
|
||||||
|
fi
|
||||||
|
if [ "${ahead}" == "0" ]; then
|
||||||
|
bits="*${bits}"
|
||||||
|
fi
|
||||||
|
if [ "${newfile}" == "0" ]; then
|
||||||
|
bits="+${bits}"
|
||||||
|
fi
|
||||||
|
if [ "${untracked}" == "0" ]; then
|
||||||
|
bits="?${bits}"
|
||||||
|
fi
|
||||||
|
if [ "${deleted}" == "0" ]; then
|
||||||
|
bits="x${bits}"
|
||||||
|
fi
|
||||||
|
if [ "${dirty}" == "0" ]; then
|
||||||
|
bits="!${bits}"
|
||||||
|
fi
|
||||||
|
if [ ! "${bits}" == "" ]; then
|
||||||
|
echo " ${bits}"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
export PS1="[\[\e[31m\]\u\[\e[m\]\[\e[35m\]@\[\e[m\]\[\e[32m\]\h\[\e[m\]] [\[\e[33m\]\W\[\e[m\]\[\e[34m\]\`parse_git_branch\`\[\e[m\]] "
|
||||||
|
|
|
@ -1,141 +1,44 @@
|
||||||
--[[
|
-- nvim options
|
||||||
THESE ARE EXAMPLE CONFIGS FEEL FREE TO CHANGE TO WHATEVER YOU WANT
|
|
||||||
`lvim` is the global options object
|
|
||||||
]]
|
|
||||||
-- vim options
|
|
||||||
vim.opt.shiftwidth = 2
|
vim.opt.shiftwidth = 2
|
||||||
vim.opt.tabstop = 2
|
vim.opt.tabstop = 2
|
||||||
vim.opt.relativenumber = true
|
vim.opt.relativenumber = true
|
||||||
vim.cmd('autocmd FileType markdown setlocal nospell')
|
vim.cmd('autocmd FileType markdown setlocal nospell')
|
||||||
vim.opt.wrap = true -- wrap lines
|
vim.opt.wrap = true -- wrap lines
|
||||||
|
vim.opt.spell = false
|
||||||
|
vim.o.shell = '/usr/bin/bash'
|
||||||
|
|
||||||
-- general
|
-- general
|
||||||
vim.opt.spell = false
|
lvim.use_icons = false
|
||||||
vim.o.shell = '/usr/bin/fish'
|
|
||||||
lvim.log.level = "info"
|
lvim.log.level = "info"
|
||||||
lvim.format_on_save = {
|
lvim.format_on_save = {
|
||||||
enabled = true,
|
enabled = true,
|
||||||
pattern = "*.lua",
|
pattern = "*.lua",
|
||||||
timeout = 1000,
|
timeout = 1000,
|
||||||
}
|
}
|
||||||
-- to disable icons and use a minimalist setup, uncomment the following
|
|
||||||
-- lvim.use_icons = false
|
|
||||||
|
|
||||||
-- keymappings <https://www.lunarvim.org/docs/configuration/keybindings>
|
-- change theme settings
|
||||||
lvim.leader = "space"
|
|
||||||
-- add your own keymapping
|
|
||||||
lvim.keys.normal_mode["<C-s>"] = ":w<cr>"
|
|
||||||
|
|
||||||
-- lvim.keys.normal_mode["<S-l>"] = ":BufferLineCycleNext<CR>"
|
|
||||||
-- lvim.keys.normal_mode["<S-h>"] = ":BufferLineCyclePrev<CR>"
|
|
||||||
|
|
||||||
-- -- Use which-key to add extra bindings with the leader-key prefix
|
|
||||||
-- lvim.builtin.which_key.mappings["W"] = { "<cmd>noautocmd w<cr>", "Save without formatting" }
|
|
||||||
-- lvim.builtin.which_key.mappings["P"] = { "<cmd>Telescope projects<CR>", "Projects" }
|
|
||||||
|
|
||||||
-- -- Change theme settings
|
|
||||||
lvim.colorscheme = "gruvbox"
|
lvim.colorscheme = "gruvbox"
|
||||||
lvim.transparent_window = true
|
lvim.transparent_window = true
|
||||||
|
|
||||||
lvim.builtin.alpha.active = true
|
lvim.builtin.alpha.active = true
|
||||||
lvim.builtin.alpha.mode = "dashboard"
|
lvim.builtin.alpha.mode = "dashboard"
|
||||||
lvim.builtin.terminal.active = true
|
lvim.builtin.terminal.active = true
|
||||||
lvim.builtin.nvimtree.setup.view.side = "left"
|
lvim.builtin.nvimtree.setup.view.side = "left"
|
||||||
lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
|
lvim.builtin.nvimtree.setup.renderer.icons.show.git = false
|
||||||
|
|
||||||
-- Automatically install missing parsers when entering buffer
|
-- automatically install missing parsers when entering buffer
|
||||||
lvim.builtin.treesitter.auto_install = true
|
lvim.builtin.treesitter.auto_install = true
|
||||||
|
|
||||||
-- if you don't want all the parsers change this to a table of the ones you want
|
-- additional Plugins
|
||||||
lvim.builtin.treesitter.ensure_installed = {
|
|
||||||
"bash",
|
|
||||||
"c_sharp",
|
|
||||||
"lua",
|
|
||||||
"python",
|
|
||||||
"css",
|
|
||||||
"latex",
|
|
||||||
"yaml",
|
|
||||||
"toml",
|
|
||||||
}
|
|
||||||
|
|
||||||
-- lvim.builtin.treesitter.ignore_install = { "haskell" }
|
|
||||||
|
|
||||||
-- -- always installed on startup, useful for parsers without a strict filetype
|
|
||||||
-- lvim.builtin.treesitter.ensure_installed = { "comment", "markdown_inline", "regex" }
|
|
||||||
|
|
||||||
-- -- generic LSP settings <https://www.lunarvim.org/docs/languages#lsp-support>
|
|
||||||
|
|
||||||
-- --- disable automatic installation of servers
|
|
||||||
-- lvim.lsp.installer.setup.automatic_installation = false
|
|
||||||
|
|
||||||
-- ---configure a server manually. IMPORTANT: Requires `:LvimCacheReset` to take effect
|
|
||||||
-- ---see the full default list `:lua =lvim.lsp.automatic_configuration.skipped_servers`
|
|
||||||
-- vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" })
|
|
||||||
-- local opts = {} -- check the lspconfig documentation for a list of all possible options
|
|
||||||
-- require("lvim.lsp.manager").setup("pyright", opts)
|
|
||||||
|
|
||||||
-- ---remove a server from the skipped list, e.g. eslint, or emmet_ls. IMPORTANT: Requires `:LvimCacheReset` to take effect
|
|
||||||
-- ---`:LvimInfo` lists which server(s) are skipped for the current filetype
|
|
||||||
-- lvim.lsp.automatic_configuration.skipped_servers = vim.tbl_filter(function(server)
|
|
||||||
-- return server ~= "emmet_ls"
|
|
||||||
-- end, lvim.lsp.automatic_configuration.skipped_servers)
|
|
||||||
|
|
||||||
-- -- you can set a custom on_attach function that will be used for all the language servers
|
|
||||||
-- -- See <https://github.com/neovim/nvim-lspconfig#keybindings-and-completion>
|
|
||||||
-- lvim.lsp.on_attach_callback = function(client, bufnr)
|
|
||||||
-- local function buf_set_option(...)
|
|
||||||
-- vim.api.nvim_buf_set_option(bufnr, ...)
|
|
||||||
-- end
|
|
||||||
-- --Enable completion triggered by <c-x><c-o>
|
|
||||||
-- buf_set_option("omnifunc", "v:lua.vim.lsp.omnifunc")
|
|
||||||
-- end
|
|
||||||
|
|
||||||
-- -- linters and formatters <https://www.lunarvim.org/docs/languages#lintingformatting>
|
|
||||||
-- local formatters = require "lvim.lsp.null-ls.formatters"
|
|
||||||
-- formatters.setup {
|
|
||||||
-- { command = "stylua" },
|
|
||||||
-- {
|
|
||||||
-- command = "prettier",
|
|
||||||
-- extra_args = { "--print-width", "100" },
|
|
||||||
-- filetypes = { "typescript", "typescriptreact" },
|
|
||||||
-- },
|
|
||||||
-- }
|
|
||||||
-- local linters = require "lvim.lsp.null-ls.linters"
|
|
||||||
-- linters.setup {
|
|
||||||
-- { command = "flake8", filetypes = { "python" } },
|
|
||||||
-- {
|
|
||||||
-- command = "shellcheck",
|
|
||||||
-- args = { "--severity", "warning" },
|
|
||||||
-- },
|
|
||||||
-- }
|
|
||||||
|
|
||||||
-- Additional Plugins
|
|
||||||
lvim.plugins = {
|
lvim.plugins = {
|
||||||
{ "lunarvim/colorschemes" },
|
{ "lunarvim/colorschemes" },
|
||||||
{ "ellisonleao/gruvbox.nvim" },
|
{ "ellisonleao/gruvbox.nvim" },
|
||||||
{ "puremourning/vimspector" },
|
{ "puremourning/vimspector" },
|
||||||
{
|
{ "OmniSharp/omnisharp-vim" },
|
||||||
"iamcco/markdown-preview.nvim",
|
{ "SirVer/ultisnips" },
|
||||||
build = "cd app && npm install",
|
|
||||||
ft = "markdown",
|
|
||||||
config = function()
|
|
||||||
vim.g.mkdp_auto_start = 1
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- vimspector options
|
||||||
-- Plugin options
|
|
||||||
vim.g.vimspector_enable_mappings = 'HUMAN'
|
vim.g.vimspector_enable_mappings = 'HUMAN'
|
||||||
vim.g.vimspector_enable_mappings_for_mode = {
|
vim.g.vimspector_enable_mappings_for_mode = {
|
||||||
['<leader><leader>'] = { 'n', 'v' },
|
['<leader><leader>'] = { 'n', 'v' },
|
||||||
}
|
}
|
||||||
|
|
||||||
-- -- Autocommands (`:help autocmd`) <https://neovim.io/doc/user/autocmd.html>
|
|
||||||
-- vim.api.nvim_create_autocmd("FileType", {
|
|
||||||
-- pattern = "zsh",
|
|
||||||
-- callback = function()
|
|
||||||
-- -- let treesitter use bash highlight for zsh files as well
|
|
||||||
-- require("nvim-treesitter.highlight").attach(0, "bash")
|
|
||||||
-- end,
|
|
||||||
-- })
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
https://khanacademy.org/ khanacademy
|
|
||||||
https://mail.google.com/ gmail
|
|
||||||
https://mail.tutanota.com/ tutanota
|
|
||||||
https://youtube.com/ youtube
|
|
||||||
https://fosstodon.org/ mastodon
|
|
||||||
https://pixelfed.social/ pixelfed
|
|
||||||
https://github.com/ github
|
|
||||||
https://app.element.io/ element
|
|
||||||
https://web.whatsapp.com/ whatsapp
|
|
||||||
https://outlook.office.com/ intec-correo
|
|
||||||
https://campusvirtual.intec.edu.do/ intec-aula-virtual
|
|
||||||
https://procesos.intec.edu.do/ intec-procesos
|
|
|
@ -1,251 +0,0 @@
|
||||||
## ____ __
|
|
||||||
## / __ \_________ _/ /_____
|
|
||||||
## / / / / ___/ __ `/ //_/ _ \
|
|
||||||
## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake)
|
|
||||||
## /_____/_/ \__,_/_/|_|\___/ My custom qutebrowser config
|
|
||||||
##
|
|
||||||
|
|
||||||
# Autogenerated config.py
|
|
||||||
#
|
|
||||||
# NOTE: config.py is intended for advanced users who are comfortable
|
|
||||||
# with manually migrating the config file on qutebrowser upgrades. If
|
|
||||||
# you prefer, you can also configure qutebrowser using the
|
|
||||||
# :set/:bind/:config-* commands without having to write a config.py
|
|
||||||
# file.
|
|
||||||
#
|
|
||||||
# Documentation:
|
|
||||||
# qute://help/configuring.html
|
|
||||||
# qute://help/settings.html
|
|
||||||
|
|
||||||
# Uncomment this to still load settings configured via autoconfig.yml
|
|
||||||
# config.load_autoconfig()
|
|
||||||
# Or uncomment this line to load settings from config.py
|
|
||||||
config.load_autoconfig(False)
|
|
||||||
|
|
||||||
# Aliases for commands. The keys of the given dictionary are the
|
|
||||||
# aliases, while the values are the commands they map to.
|
|
||||||
# Type: Dict
|
|
||||||
c.aliases = {'q': 'quit', 'w': 'session-save', 'wq': 'quit --save'}
|
|
||||||
|
|
||||||
# Setting dark mode
|
|
||||||
#config.set("colors.webpage.darkmode.enabled", True)
|
|
||||||
|
|
||||||
|
|
||||||
# Which cookies to accept. With QtWebEngine, this setting also controls
|
|
||||||
# other features with tracking capabilities similar to those of cookies;
|
|
||||||
# including IndexedDB, DOM storage, filesystem API, service workers, and
|
|
||||||
# AppCache. Note that with QtWebKit, only `all` and `never` are
|
|
||||||
# supported as per-domain values. Setting `no-3rdparty` or `no-
|
|
||||||
# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
|
|
||||||
# `all`.
|
|
||||||
# Type: String
|
|
||||||
# Valid values:
|
|
||||||
# - all: Accept all cookies.
|
|
||||||
# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
|
|
||||||
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
|
|
||||||
# - never: Don't accept cookies at all.
|
|
||||||
config.set('content.cookies.accept', 'all', 'chrome-devtools://*')
|
|
||||||
|
|
||||||
# Which cookies to accept. With QtWebEngine, this setting also controls
|
|
||||||
# other features with tracking capabilities similar to those of cookies;
|
|
||||||
# including IndexedDB, DOM storage, filesystem API, service workers, and
|
|
||||||
# AppCache. Note that with QtWebKit, only `all` and `never` are
|
|
||||||
# supported as per-domain values. Setting `no-3rdparty` or `no-
|
|
||||||
# unknown-3rdparty` per-domain on QtWebKit will have the same effect as
|
|
||||||
# `all`.
|
|
||||||
# Type: String
|
|
||||||
# Valid values:
|
|
||||||
# - all: Accept all cookies.
|
|
||||||
# - no-3rdparty: Accept cookies from the same origin only. This is known to break some sites, such as GMail.
|
|
||||||
# - no-unknown-3rdparty: Accept cookies from the same origin only, unless a cookie is already set for the domain. On QtWebEngine, this is the same as no-3rdparty.
|
|
||||||
# - never: Don't accept cookies at all.
|
|
||||||
config.set('content.cookies.accept', 'all', 'devtools://*')
|
|
||||||
|
|
||||||
# User agent to send. The following placeholders are defined: *
|
|
||||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
|
||||||
# The underlying WebKit version (set to a fixed value with
|
|
||||||
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
|
||||||
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
|
||||||
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
|
||||||
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
|
||||||
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
|
||||||
# running qutebrowser version. The default value is equal to the
|
|
||||||
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
|
||||||
# read from JavaScript is always the global value. With QtWebEngine
|
|
||||||
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
|
||||||
# JavaScript requires a restart.
|
|
||||||
# Type: FormatString
|
|
||||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/{webkit_version} (KHTML, like Gecko) {upstream_browser_key}/{upstream_browser_version} Safari/{webkit_version}', 'https://web.whatsapp.com/')
|
|
||||||
|
|
||||||
# User agent to send. The following placeholders are defined: *
|
|
||||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
|
||||||
# The underlying WebKit version (set to a fixed value with
|
|
||||||
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
|
||||||
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
|
||||||
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
|
||||||
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
|
||||||
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
|
||||||
# running qutebrowser version. The default value is equal to the
|
|
||||||
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
|
||||||
# read from JavaScript is always the global value. With QtWebEngine
|
|
||||||
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
|
||||||
# JavaScript requires a restart.
|
|
||||||
# Type: FormatString
|
|
||||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://accounts.google.com/*')
|
|
||||||
|
|
||||||
# User agent to send. The following placeholders are defined: *
|
|
||||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
|
||||||
# The underlying WebKit version (set to a fixed value with
|
|
||||||
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
|
||||||
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
|
||||||
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
|
||||||
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
|
||||||
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
|
||||||
# running qutebrowser version. The default value is equal to the
|
|
||||||
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
|
||||||
# read from JavaScript is always the global value. With QtWebEngine
|
|
||||||
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
|
||||||
# JavaScript requires a restart.
|
|
||||||
# Type: FormatString
|
|
||||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99 Safari/537.36', 'https://*.slack.com/*')
|
|
||||||
|
|
||||||
# User agent to send. The following placeholders are defined: *
|
|
||||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
|
||||||
# The underlying WebKit version (set to a fixed value with
|
|
||||||
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
|
||||||
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
|
||||||
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
|
||||||
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
|
||||||
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
|
||||||
# running qutebrowser version. The default value is equal to the
|
|
||||||
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
|
||||||
# read from JavaScript is always the global value. With QtWebEngine
|
|
||||||
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
|
||||||
# JavaScript requires a restart.
|
|
||||||
# Type: FormatString
|
|
||||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://docs.google.com/*')
|
|
||||||
|
|
||||||
# User agent to send. The following placeholders are defined: *
|
|
||||||
# `{os_info}`: Something like "X11; Linux x86_64". * `{webkit_version}`:
|
|
||||||
# The underlying WebKit version (set to a fixed value with
|
|
||||||
# QtWebEngine). * `{qt_key}`: "Qt" for QtWebKit, "QtWebEngine" for
|
|
||||||
# QtWebEngine. * `{qt_version}`: The underlying Qt version. *
|
|
||||||
# `{upstream_browser_key}`: "Version" for QtWebKit, "Chrome" for
|
|
||||||
# QtWebEngine. * `{upstream_browser_version}`: The corresponding
|
|
||||||
# Safari/Chrome version. * `{qutebrowser_version}`: The currently
|
|
||||||
# running qutebrowser version. The default value is equal to the
|
|
||||||
# unchanged user agent of QtWebKit/QtWebEngine. Note that the value
|
|
||||||
# read from JavaScript is always the global value. With QtWebEngine
|
|
||||||
# between 5.12 and 5.14 (inclusive), changing the value exposed to
|
|
||||||
# JavaScript requires a restart.
|
|
||||||
# Type: FormatString
|
|
||||||
config.set('content.headers.user_agent', 'Mozilla/5.0 ({os_info}; rv:71.0) Gecko/20100101 Firefox/71.0', 'https://drive.google.com/*')
|
|
||||||
|
|
||||||
# Load images automatically in web pages.
|
|
||||||
# Type: Bool
|
|
||||||
config.set('content.images', True, 'chrome-devtools://*')
|
|
||||||
|
|
||||||
# Load images automatically in web pages.
|
|
||||||
# Type: Bool
|
|
||||||
config.set('content.images', True, 'devtools://*')
|
|
||||||
|
|
||||||
# Enable JavaScript.
|
|
||||||
# Type: Bool
|
|
||||||
config.set('content.javascript.enabled', True, 'chrome-devtools://*')
|
|
||||||
|
|
||||||
# Enable JavaScript.
|
|
||||||
# Type: Bool
|
|
||||||
config.set('content.javascript.enabled', True, 'devtools://*')
|
|
||||||
|
|
||||||
# Enable JavaScript.
|
|
||||||
# Type: Bool
|
|
||||||
config.set('content.javascript.enabled', True, 'chrome://*/*')
|
|
||||||
|
|
||||||
# Enable JavaScript.
|
|
||||||
# Type: Bool
|
|
||||||
config.set('content.javascript.enabled', True, 'qute://*/*')
|
|
||||||
|
|
||||||
# Type: BoolAsk
|
|
||||||
# Valid values:
|
|
||||||
# - true
|
|
||||||
# - false
|
|
||||||
# - ask
|
|
||||||
# config.set('content.notifications.enabled', True, 'https://www.youtube.com')
|
|
||||||
|
|
||||||
# Directory to save downloads to. If unset, a sensible OS-specific
|
|
||||||
# default is used.
|
|
||||||
# Type: Directory
|
|
||||||
c.downloads.location.directory = '~/Downloads'
|
|
||||||
|
|
||||||
# When to show the tab bar.
|
|
||||||
# Type: String
|
|
||||||
# Valid values:
|
|
||||||
# - always: Always show the tab bar.
|
|
||||||
# - never: Always hide the tab bar.
|
|
||||||
# - multiple: Hide the tab bar if only one tab is open.
|
|
||||||
# - switching: Show the tab bar when switching tabs.
|
|
||||||
c.tabs.show = 'always'
|
|
||||||
|
|
||||||
# Setting default page for when opening new tabs or new windows with
|
|
||||||
# commands like :open -t and :open -w .
|
|
||||||
c.url.default_page = 'https://start.duckduckgo.com'
|
|
||||||
c.url.start_pages = 'https://start.duckduckgo.com'
|
|
||||||
|
|
||||||
# Search engines which can be used via the address bar. Maps a search
|
|
||||||
# engine name (such as `DEFAULT`, or `ddg`) to a URL with a `{}`
|
|
||||||
# placeholder. The placeholder will be replaced by the search term, use
|
|
||||||
# `{{` and `}}` for literal `{`/`}` braces. The following further
|
|
||||||
# placeholds are defined to configure how special characters in the
|
|
||||||
# search terms are replaced by safe characters (called 'quoting'): *
|
|
||||||
# `{}` and `{semiquoted}` quote everything except slashes; this is the
|
|
||||||
# most sensible choice for almost all search engines (for the search
|
|
||||||
# term `slash/and&` this placeholder expands to `slash/and%26amp`).
|
|
||||||
# * `{quoted}` quotes all characters (for `slash/and&` this
|
|
||||||
# placeholder expands to `slash%2Fand%26amp`). * `{unquoted}` quotes
|
|
||||||
# nothing (for `slash/and&` this placeholder expands to
|
|
||||||
# `slash/and&`). The search engine named `DEFAULT` is used when
|
|
||||||
# `url.auto_search` is turned on and something else than a URL was
|
|
||||||
# entered to be opened. Other search engines can be used by prepending
|
|
||||||
# the search engine name to the search term, e.g. `:open google
|
|
||||||
# qutebrowser`.
|
|
||||||
# Type: Dict
|
|
||||||
c.url.searchengines = {'DEFAULT': 'https://duckduckgo.com/?q={}', 'aw': 'https://wiki.archlinux.org/?search={}', 'ub': 'https://www.urbandictionary.com/define.php?term={}', 'wiki': 'https://en.wikipedia.org/wiki/{}'}
|
|
||||||
|
|
||||||
# Default font families to use. Whenever "default_family" is used in a
|
|
||||||
# font setting, it's replaced with the fonts listed here. If set to an
|
|
||||||
# empty value, a system-specific monospace default is used.
|
|
||||||
# Type: List of Font, or Font
|
|
||||||
c.fonts.default_family = '"mononoki Nerd Font"'
|
|
||||||
|
|
||||||
# Default font size to use. Whenever "default_size" is used in a font
|
|
||||||
# setting, it's replaced with the size listed here. Valid values are
|
|
||||||
# either a float value with a "pt" suffix, or an integer value with a
|
|
||||||
# "px" suffix.
|
|
||||||
# Type: String
|
|
||||||
c.fonts.default_size = '10pt'
|
|
||||||
|
|
||||||
# Font used in the completion widget.
|
|
||||||
# Type: Font
|
|
||||||
c.fonts.completion.entry = '10pt "mononoki Nerd Font"'
|
|
||||||
|
|
||||||
# Font used for the debugging console.
|
|
||||||
# Type: Font
|
|
||||||
c.fonts.debug_console = '10pt "mononoki Nerd Font"'
|
|
||||||
|
|
||||||
# Font used for prompts.
|
|
||||||
# Type: Font
|
|
||||||
c.fonts.prompts = 'default_size sans-serif'
|
|
||||||
|
|
||||||
# Font used in the statusbar.
|
|
||||||
# Type: Font
|
|
||||||
c.fonts.statusbar = '10pt "mononoki Nerd Font"'
|
|
||||||
|
|
||||||
config.source('gruvbox.py')
|
|
||||||
|
|
||||||
# Bindings for normal mode
|
|
||||||
config.bind('M', 'hint links spawn mpv {hint-url}')
|
|
||||||
config.bind('Z', 'hint links spawn st -e youtube-dl {hint-url}')
|
|
||||||
config.bind('t', 'set-cmd-text -s :open -t')
|
|
||||||
config.bind('xb', 'config-cycle statusbar.show always never')
|
|
||||||
config.bind('xt', 'config-cycle tabs.show always never')
|
|
||||||
config.bind('xx', 'config-cycle statusbar.show always never;; config-cycle tabs.show always never')
|
|
|
@ -1,332 +0,0 @@
|
||||||
# gruvbox dark hard qutebrowser theme by Florian Bruhin <me@the-compiler.org>
|
|
||||||
#
|
|
||||||
# Originally based on:
|
|
||||||
# base16-qutebrowser (https://github.com/theova/base16-qutebrowser)
|
|
||||||
# Base16 qutebrowser template by theova and Daniel Mulford
|
|
||||||
# Gruvbox dark, hard scheme by Dawid Kurek (dawikur@gmail.com), morhetz (https://github.com/morhetz/gruvbox)
|
|
||||||
|
|
||||||
bg0_hard = "#1d2021"
|
|
||||||
bg0_soft = '#32302f'
|
|
||||||
bg0_normal = '#282828'
|
|
||||||
|
|
||||||
bg0 = bg0_normal
|
|
||||||
bg1 = "#3c3836"
|
|
||||||
bg2 = "#504945"
|
|
||||||
bg3 = "#665c54"
|
|
||||||
bg4 = "#7c6f64"
|
|
||||||
|
|
||||||
fg0 = "#fbf1c7"
|
|
||||||
fg1 = "#ebdbb2"
|
|
||||||
fg2 = "#d5c4a1"
|
|
||||||
fg3 = "#bdae93"
|
|
||||||
fg4 = "#a89984"
|
|
||||||
|
|
||||||
bright_red = "#fb4934"
|
|
||||||
bright_green = "#b8bb26"
|
|
||||||
bright_yellow = "#fabd2f"
|
|
||||||
bright_blue = "#83a598"
|
|
||||||
bright_purple = "#d3869b"
|
|
||||||
bright_aqua = "#8ec07c"
|
|
||||||
bright_gray = "#928374"
|
|
||||||
bright_orange = "#fe8019"
|
|
||||||
|
|
||||||
dark_red = "#cc241d"
|
|
||||||
dark_green = "#98971a"
|
|
||||||
dark_yellow = "#d79921"
|
|
||||||
dark_blue = "#458588"
|
|
||||||
dark_purple = "#b16286"
|
|
||||||
dark_aqua = "#689d6a"
|
|
||||||
dark_gray = "#a89984"
|
|
||||||
dark_orange = "#d65d0e"
|
|
||||||
|
|
||||||
### Completion
|
|
||||||
|
|
||||||
# Text color of the completion widget. May be a single color to use for
|
|
||||||
# all columns or a list of three colors, one for each column.
|
|
||||||
c.colors.completion.fg = [fg1, bright_aqua, bright_yellow]
|
|
||||||
|
|
||||||
# Background color of the completion widget for odd rows.
|
|
||||||
c.colors.completion.odd.bg = bg0
|
|
||||||
|
|
||||||
# Background color of the completion widget for even rows.
|
|
||||||
c.colors.completion.even.bg = c.colors.completion.odd.bg
|
|
||||||
|
|
||||||
# Foreground color of completion widget category headers.
|
|
||||||
c.colors.completion.category.fg = bright_blue
|
|
||||||
|
|
||||||
# Background color of the completion widget category headers.
|
|
||||||
c.colors.completion.category.bg = bg1
|
|
||||||
|
|
||||||
# Top border color of the completion widget category headers.
|
|
||||||
c.colors.completion.category.border.top = c.colors.completion.category.bg
|
|
||||||
|
|
||||||
# Bottom border color of the completion widget category headers.
|
|
||||||
c.colors.completion.category.border.bottom = c.colors.completion.category.bg
|
|
||||||
|
|
||||||
# Foreground color of the selected completion item.
|
|
||||||
c.colors.completion.item.selected.fg = fg0
|
|
||||||
|
|
||||||
# Background color of the selected completion item.
|
|
||||||
c.colors.completion.item.selected.bg = bg4
|
|
||||||
|
|
||||||
# Top border color of the selected completion item.
|
|
||||||
c.colors.completion.item.selected.border.top = bg2
|
|
||||||
|
|
||||||
# Bottom border color of the selected completion item.
|
|
||||||
c.colors.completion.item.selected.border.bottom = c.colors.completion.item.selected.border.top
|
|
||||||
|
|
||||||
# Foreground color of the matched text in the selected completion item.
|
|
||||||
c.colors.completion.item.selected.match.fg = bright_orange
|
|
||||||
|
|
||||||
# Foreground color of the matched text in the completion.
|
|
||||||
c.colors.completion.match.fg = c.colors.completion.item.selected.match.fg
|
|
||||||
|
|
||||||
# Color of the scrollbar handle in the completion view.
|
|
||||||
c.colors.completion.scrollbar.fg = c.colors.completion.item.selected.fg
|
|
||||||
|
|
||||||
# Color of the scrollbar in the completion view.
|
|
||||||
c.colors.completion.scrollbar.bg = c.colors.completion.category.bg
|
|
||||||
|
|
||||||
### Context menu
|
|
||||||
|
|
||||||
# Background color of disabled items in the context menu.
|
|
||||||
c.colors.contextmenu.disabled.bg = bg3
|
|
||||||
|
|
||||||
# Foreground color of disabled items in the context menu.
|
|
||||||
c.colors.contextmenu.disabled.fg = fg3
|
|
||||||
|
|
||||||
# Background color of the context menu. If set to null, the Qt default is used.
|
|
||||||
c.colors.contextmenu.menu.bg = bg0
|
|
||||||
|
|
||||||
# Foreground color of the context menu. If set to null, the Qt default is used.
|
|
||||||
c.colors.contextmenu.menu.fg = fg2
|
|
||||||
|
|
||||||
# Background color of the context menu’s selected item. If set to null, the Qt default is used.
|
|
||||||
c.colors.contextmenu.selected.bg = bg2
|
|
||||||
|
|
||||||
#Foreground color of the context menu’s selected item. If set to null, the Qt default is used.
|
|
||||||
c.colors.contextmenu.selected.fg = c.colors.contextmenu.menu.fg
|
|
||||||
|
|
||||||
### Downloads
|
|
||||||
|
|
||||||
# Background color for the download bar.
|
|
||||||
c.colors.downloads.bar.bg = bg0
|
|
||||||
|
|
||||||
# Color gradient start for download text.
|
|
||||||
c.colors.downloads.start.fg = bg0
|
|
||||||
|
|
||||||
# Color gradient start for download backgrounds.
|
|
||||||
c.colors.downloads.start.bg = bright_blue
|
|
||||||
|
|
||||||
# Color gradient end for download text.
|
|
||||||
c.colors.downloads.stop.fg = c.colors.downloads.start.fg
|
|
||||||
|
|
||||||
# Color gradient stop for download backgrounds.
|
|
||||||
c.colors.downloads.stop.bg = bright_aqua
|
|
||||||
|
|
||||||
# Foreground color for downloads with errors.
|
|
||||||
c.colors.downloads.error.fg = bright_red
|
|
||||||
|
|
||||||
### Hints
|
|
||||||
|
|
||||||
# Font color for hints.
|
|
||||||
c.colors.hints.fg = bg0
|
|
||||||
|
|
||||||
# Background color for hints.
|
|
||||||
c.colors.hints.bg = 'rgba(250, 191, 47, 200)' # bright_yellow
|
|
||||||
|
|
||||||
# Font color for the matched part of hints.
|
|
||||||
c.colors.hints.match.fg = bg4
|
|
||||||
|
|
||||||
### Keyhint widget
|
|
||||||
|
|
||||||
# Text color for the keyhint widget.
|
|
||||||
c.colors.keyhint.fg = fg4
|
|
||||||
|
|
||||||
# Highlight color for keys to complete the current keychain.
|
|
||||||
c.colors.keyhint.suffix.fg = fg0
|
|
||||||
|
|
||||||
# Background color of the keyhint widget.
|
|
||||||
c.colors.keyhint.bg = bg0
|
|
||||||
|
|
||||||
### Messages
|
|
||||||
|
|
||||||
# Foreground color of an error message.
|
|
||||||
c.colors.messages.error.fg = bg0
|
|
||||||
|
|
||||||
# Background color of an error message.
|
|
||||||
c.colors.messages.error.bg = bright_red
|
|
||||||
|
|
||||||
# Border color of an error message.
|
|
||||||
c.colors.messages.error.border = c.colors.messages.error.bg
|
|
||||||
|
|
||||||
# Foreground color of a warning message.
|
|
||||||
c.colors.messages.warning.fg = bg0
|
|
||||||
|
|
||||||
# Background color of a warning message.
|
|
||||||
c.colors.messages.warning.bg = bright_purple
|
|
||||||
|
|
||||||
# Border color of a warning message.
|
|
||||||
c.colors.messages.warning.border = c.colors.messages.warning.bg
|
|
||||||
|
|
||||||
# Foreground color of an info message.
|
|
||||||
c.colors.messages.info.fg = fg2
|
|
||||||
|
|
||||||
# Background color of an info message.
|
|
||||||
c.colors.messages.info.bg = bg0
|
|
||||||
|
|
||||||
# Border color of an info message.
|
|
||||||
c.colors.messages.info.border = c.colors.messages.info.bg
|
|
||||||
|
|
||||||
### Prompts
|
|
||||||
|
|
||||||
# Foreground color for prompts.
|
|
||||||
c.colors.prompts.fg = fg2
|
|
||||||
|
|
||||||
# Border used around UI elements in prompts.
|
|
||||||
c.colors.prompts.border = f'1px solid {bg1}'
|
|
||||||
|
|
||||||
# Background color for prompts.
|
|
||||||
c.colors.prompts.bg = bg3
|
|
||||||
|
|
||||||
# Background color for the selected item in filename prompts.
|
|
||||||
c.colors.prompts.selected.bg = bg2
|
|
||||||
|
|
||||||
### Statusbar
|
|
||||||
|
|
||||||
# Foreground color of the statusbar.
|
|
||||||
c.colors.statusbar.normal.fg = fg2
|
|
||||||
|
|
||||||
# Background color of the statusbar.
|
|
||||||
c.colors.statusbar.normal.bg = bg0
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in insert mode.
|
|
||||||
c.colors.statusbar.insert.fg = bg0
|
|
||||||
|
|
||||||
# Background color of the statusbar in insert mode.
|
|
||||||
c.colors.statusbar.insert.bg = dark_aqua
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in passthrough mode.
|
|
||||||
c.colors.statusbar.passthrough.fg = bg0
|
|
||||||
|
|
||||||
# Background color of the statusbar in passthrough mode.
|
|
||||||
c.colors.statusbar.passthrough.bg = dark_blue
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in private browsing mode.
|
|
||||||
c.colors.statusbar.private.fg = bright_purple
|
|
||||||
|
|
||||||
# Background color of the statusbar in private browsing mode.
|
|
||||||
c.colors.statusbar.private.bg = bg0
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in command mode.
|
|
||||||
c.colors.statusbar.command.fg = fg3
|
|
||||||
|
|
||||||
# Background color of the statusbar in command mode.
|
|
||||||
c.colors.statusbar.command.bg = bg1
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in private browsing + command mode.
|
|
||||||
c.colors.statusbar.command.private.fg = c.colors.statusbar.private.fg
|
|
||||||
|
|
||||||
# Background color of the statusbar in private browsing + command mode.
|
|
||||||
c.colors.statusbar.command.private.bg = c.colors.statusbar.command.bg
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in caret mode.
|
|
||||||
c.colors.statusbar.caret.fg = bg0
|
|
||||||
|
|
||||||
# Background color of the statusbar in caret mode.
|
|
||||||
c.colors.statusbar.caret.bg = dark_purple
|
|
||||||
|
|
||||||
# Foreground color of the statusbar in caret mode with a selection.
|
|
||||||
c.colors.statusbar.caret.selection.fg = c.colors.statusbar.caret.fg
|
|
||||||
|
|
||||||
# Background color of the statusbar in caret mode with a selection.
|
|
||||||
c.colors.statusbar.caret.selection.bg = bright_purple
|
|
||||||
|
|
||||||
# Background color of the progress bar.
|
|
||||||
c.colors.statusbar.progress.bg = bright_blue
|
|
||||||
|
|
||||||
# Default foreground color of the URL in the statusbar.
|
|
||||||
c.colors.statusbar.url.fg = fg4
|
|
||||||
|
|
||||||
# Foreground color of the URL in the statusbar on error.
|
|
||||||
c.colors.statusbar.url.error.fg = dark_red
|
|
||||||
|
|
||||||
# Foreground color of the URL in the statusbar for hovered links.
|
|
||||||
c.colors.statusbar.url.hover.fg = bright_orange
|
|
||||||
|
|
||||||
# Foreground color of the URL in the statusbar on successful load
|
|
||||||
# (http).
|
|
||||||
c.colors.statusbar.url.success.http.fg = bright_red
|
|
||||||
|
|
||||||
# Foreground color of the URL in the statusbar on successful load
|
|
||||||
# (https).
|
|
||||||
c.colors.statusbar.url.success.https.fg = fg0
|
|
||||||
|
|
||||||
# Foreground color of the URL in the statusbar when there's a warning.
|
|
||||||
c.colors.statusbar.url.warn.fg = bright_purple
|
|
||||||
|
|
||||||
### tabs
|
|
||||||
|
|
||||||
# Background color of the tab bar.
|
|
||||||
c.colors.tabs.bar.bg = bg0
|
|
||||||
|
|
||||||
# Color gradient start for the tab indicator.
|
|
||||||
c.colors.tabs.indicator.start = bright_blue
|
|
||||||
|
|
||||||
# Color gradient end for the tab indicator.
|
|
||||||
c.colors.tabs.indicator.stop = bright_aqua
|
|
||||||
|
|
||||||
# Color for the tab indicator on errors.
|
|
||||||
c.colors.tabs.indicator.error = bright_red
|
|
||||||
|
|
||||||
# Foreground color of unselected odd tabs.
|
|
||||||
c.colors.tabs.odd.fg = fg2
|
|
||||||
|
|
||||||
# Background color of unselected odd tabs.
|
|
||||||
c.colors.tabs.odd.bg = bg2
|
|
||||||
|
|
||||||
# Foreground color of unselected even tabs.
|
|
||||||
c.colors.tabs.even.fg = c.colors.tabs.odd.fg
|
|
||||||
|
|
||||||
# Background color of unselected even tabs.
|
|
||||||
c.colors.tabs.even.bg = bg3
|
|
||||||
|
|
||||||
# Foreground color of selected odd tabs.
|
|
||||||
c.colors.tabs.selected.odd.fg = fg2
|
|
||||||
|
|
||||||
# Background color of selected odd tabs.
|
|
||||||
c.colors.tabs.selected.odd.bg = bg0
|
|
||||||
|
|
||||||
# Foreground color of selected even tabs.
|
|
||||||
c.colors.tabs.selected.even.fg = c.colors.tabs.selected.odd.fg
|
|
||||||
|
|
||||||
# Background color of selected even tabs.
|
|
||||||
c.colors.tabs.selected.even.bg = bg0
|
|
||||||
|
|
||||||
# Background color of pinned unselected even tabs.
|
|
||||||
c.colors.tabs.pinned.even.bg = bright_green
|
|
||||||
|
|
||||||
# Foreground color of pinned unselected even tabs.
|
|
||||||
c.colors.tabs.pinned.even.fg = bg2
|
|
||||||
|
|
||||||
# Background color of pinned unselected odd tabs.
|
|
||||||
c.colors.tabs.pinned.odd.bg = bright_green
|
|
||||||
|
|
||||||
# Foreground color of pinned unselected odd tabs.
|
|
||||||
c.colors.tabs.pinned.odd.fg = c.colors.tabs.pinned.even.fg
|
|
||||||
|
|
||||||
# Background color of pinned selected even tabs.
|
|
||||||
c.colors.tabs.pinned.selected.even.bg = bg0
|
|
||||||
|
|
||||||
# Foreground color of pinned selected even tabs.
|
|
||||||
c.colors.tabs.pinned.selected.even.fg = c.colors.tabs.selected.odd.fg
|
|
||||||
|
|
||||||
# Background color of pinned selected odd tabs.
|
|
||||||
c.colors.tabs.pinned.selected.odd.bg = c.colors.tabs.pinned.selected.even.bg
|
|
||||||
|
|
||||||
# Foreground color of pinned selected odd tabs.
|
|
||||||
c.colors.tabs.pinned.selected.odd.fg = c.colors.tabs.selected.odd.fg
|
|
||||||
|
|
||||||
# Background color for webpages if unset (or empty to use the theme's
|
|
||||||
# color).
|
|
||||||
c.colors.webpage.bg = bg4
|
|
|
@ -1,33 +0,0 @@
|
||||||
## ____ __
|
|
||||||
## / __ \_________ _/ /_____
|
|
||||||
## / / / / ___/ __ `/ //_/ _ \
|
|
||||||
## / /_/ / / / /_/ / ,< / __/ Clay Gomera (Drake)
|
|
||||||
## /_____/_/ \__,_/_/|_|\___/ My custom starship prompt config
|
|
||||||
##
|
|
||||||
|
|
||||||
add_newline = false
|
|
||||||
|
|
||||||
[line_break]
|
|
||||||
disabled = true
|
|
||||||
|
|
||||||
[character]
|
|
||||||
error_symbol = "[](bold red) "
|
|
||||||
success_symbol = "[](bold green)"
|
|
||||||
|
|
||||||
[directory]
|
|
||||||
truncation_length = 5
|
|
||||||
home_symbol = " "
|
|
||||||
format = "[$path](bold italic yellow) "
|
|
||||||
|
|
||||||
[hostname]
|
|
||||||
ssh_only = false
|
|
||||||
disabled = false
|
|
||||||
style = "italic #87A752"
|
|
||||||
|
|
||||||
[package]
|
|
||||||
disabled = true
|
|
||||||
|
|
||||||
[username]
|
|
||||||
show_always = true
|
|
||||||
style_user = "bold red"
|
|
||||||
format = "[$user]($style)[ in ](white)"
|
|
|
@ -5,7 +5,7 @@
|
||||||
# - Dependencies: dmenu, fd, feh
|
# - Dependencies: dmenu, fd, feh
|
||||||
|
|
||||||
## MAIN VARIABLES AND COMMANDS ##
|
## MAIN VARIABLES AND COMMANDS ##
|
||||||
walldir="Pictures/Wallpapers/" # wallpapers folder, change it to yours, make sure that it ends with a /
|
walldir="Pictures/Wallpapers"
|
||||||
cd "$walldir" || exit
|
cd "$walldir" || exit
|
||||||
|
|
||||||
## SELECT PICTURE FUNCTION ##
|
## SELECT PICTURE FUNCTION ##
|
||||||
|
|
|
@ -80,7 +80,7 @@ case "$cases" in
|
||||||
action;
|
action;
|
||||||
check;;
|
check;;
|
||||||
$option5*)
|
$option5*)
|
||||||
qutebrowser http://networkcheck.kde.org;;
|
$BROWSER http://networkcheck.kde.org;;
|
||||||
$option6*)
|
$option6*)
|
||||||
exit 0
|
exit 0
|
||||||
esac
|
esac
|
||||||
|
|
|
@ -4,7 +4,7 @@ static const unsigned int snap = 32; /* snap pixel */
|
||||||
static const int showbar = 1; /* 0 means no bar */
|
static const int showbar = 1; /* 0 means no bar */
|
||||||
static const int topbar = 1; /* 0 means bottom bar */
|
static const int topbar = 1; /* 0 means bottom bar */
|
||||||
static const int horizpadbar = 2; /* horizontal padding for statusbar */
|
static const int horizpadbar = 2; /* horizontal padding for statusbar */
|
||||||
static const int vertpadbar = 8; /* vertical padding for statusbar */
|
static const int vertpadbar = 4; /* vertical padding for statusbar */
|
||||||
static const char *fonts[] = {"Symbols Nerd Font Mono:size=12", "mononoki Nerd Font:size=12"};
|
static const char *fonts[] = {"Symbols Nerd Font Mono:size=12", "mononoki Nerd Font:size=12"};
|
||||||
static const char dmenufont[] = {"mononoki Nerd Font:size=12"};
|
static const char dmenufont[] = {"mononoki Nerd Font:size=12"};
|
||||||
static const char col_gray1[] = "#1d2021";
|
static const char col_gray1[] = "#1d2021";
|
||||||
|
@ -12,11 +12,18 @@ static const char col_gray2[] = "#32302f";
|
||||||
static const char col_gray3[] = "#d5c4a1";
|
static const char col_gray3[] = "#d5c4a1";
|
||||||
static const char col_gray4[] = "#fbf1c7";
|
static const char col_gray4[] = "#fbf1c7";
|
||||||
static const char col_cyan[] = "#cc241d";
|
static const char col_cyan[] = "#cc241d";
|
||||||
|
static const unsigned int baralpha = 0xd0;
|
||||||
|
static const unsigned int borderalpha = OPAQUE;
|
||||||
static const char *colors[][3] = {
|
static const char *colors[][3] = {
|
||||||
/* fg bg border */
|
/* fg bg border */
|
||||||
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
||||||
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
|
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
|
||||||
};
|
};
|
||||||
|
static const unsigned int alphas[][3] = {
|
||||||
|
/* fg bg border*/
|
||||||
|
[SchemeNorm] = { OPAQUE, baralpha, borderalpha },
|
||||||
|
[SchemeSel] = { OPAQUE, baralpha, borderalpha },
|
||||||
|
};
|
||||||
|
|
||||||
/* scratchpads */
|
/* scratchpads */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@ -188,29 +195,29 @@ static const Key keys[] = {
|
||||||
// text editor
|
// text editor
|
||||||
{ MODKEY, XK_e, spawn, SHCMD("st -n neovim -c neovim -e $HOME/.local/bin/lvim")},
|
{ MODKEY, XK_e, spawn, SHCMD("st -n neovim -c neovim -e $HOME/.local/bin/lvim")},
|
||||||
// web browser
|
// web browser
|
||||||
{ MODKEY, XK_w, spawn, SHCMD("qutebrowser")},
|
{ MODKEY, XK_w, spawn, SHCMD("brave")},
|
||||||
// chat
|
// chat
|
||||||
{ MODKEY, XK_s, spawn, SHCMD("flatpak run org.signal.Signal")},
|
{ MODKEY, XK_s, spawn, SHCMD("flatpak run org.signal.Signal")},
|
||||||
|
|
||||||
/* keyboard layout */
|
/* keyboard layout */
|
||||||
// set keyboard layout to es
|
// set keyboard layout to es
|
||||||
{ MODKEY|ControlMask, XK_e, spawn, SHCMD("setxkbmap -layout es")},
|
{ MODKEY|ControlMask, XK_e, spawn, SHCMD("setxkbmap -layout es && pkill -RTMIN+10 dwmblocks")},
|
||||||
// set keyboard layout to us
|
// set keyboard layout to us
|
||||||
{ MODKEY|ControlMask, XK_u, spawn, SHCMD("setxkbmap -layout us")},
|
{ MODKEY|ControlMask, XK_u, spawn, SHCMD("setxkbmap -layout us && pkill -RTMIN+10 dwmblocks")},
|
||||||
|
|
||||||
/* XF86 Keys */
|
/* XF86 Keys */
|
||||||
// increase volume
|
// increase volume
|
||||||
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pamixer -i 5")},
|
{ 0, XF86XK_AudioRaiseVolume, spawn, SHCMD("pamixer -i 5 && pkill -RTMIN+10 dwmblocks")},
|
||||||
// decrease volume
|
// decrease volume
|
||||||
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pamixer -d 5")},
|
{ 0, XF86XK_AudioLowerVolume, spawn, SHCMD("pamixer -d 5 && pkill -RTMIN+10 dwmblocks")},
|
||||||
// mute volume
|
// mute volume
|
||||||
{ 0, XF86XK_AudioMute, spawn, SHCMD("pamixer -t")},
|
{ 0, XF86XK_AudioMute, spawn, SHCMD("pamixer -t && pkill -RTMIN+10 dwmblocks")},
|
||||||
// mute microphone
|
// mute microphone
|
||||||
{ 0, XF86XK_AudioMicMute, spawn, SHCMD("pamixer --default-source -t")},
|
{ 0, XF86XK_AudioMicMute, spawn, SHCMD("pamixer --default-source -t && pkill -RTMIN+10 dwmblocks")},
|
||||||
// increase brightness
|
// increase brightness
|
||||||
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("xbacklight -inc 10")},
|
{ 0, XF86XK_MonBrightnessUp, spawn, SHCMD("xbacklight -inc 10 && pkill -RTMIN+10 dwmblocks")},
|
||||||
// decrease brightness
|
// decrease brightness
|
||||||
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("xbacklight -dec 10")},
|
{ 0, XF86XK_MonBrightnessDown, spawn, SHCMD("xbacklight -dec 10 && pkill -RTMIN+10 dwmblocks")},
|
||||||
// display settings
|
// display settings
|
||||||
{ 0, XF86XK_Display, spawn, SHCMD("arandr")},
|
{ 0, XF86XK_Display, spawn, SHCMD("arandr")},
|
||||||
// play/pause
|
// play/pause
|
||||||
|
|
|
@ -23,7 +23,7 @@ FREETYPEINC = /usr/include/freetype2
|
||||||
|
|
||||||
# includes and libs
|
# includes and libs
|
||||||
INCS = -I${X11INC} -I${FREETYPEINC}
|
INCS = -I${X11INC} -I${FREETYPEINC}
|
||||||
LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
|
LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lXrender
|
||||||
|
|
||||||
# flags
|
# flags
|
||||||
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_POSIX_C_SOURCE=200809L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
||||||
|
|
|
@ -61,7 +61,7 @@ utf8decode(const char *c, long *u, size_t clen)
|
||||||
}
|
}
|
||||||
|
|
||||||
Drw *
|
Drw *
|
||||||
drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h)
|
drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap)
|
||||||
{
|
{
|
||||||
Drw *drw = ecalloc(1, sizeof(Drw));
|
Drw *drw = ecalloc(1, sizeof(Drw));
|
||||||
|
|
||||||
|
@ -70,8 +70,11 @@ drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h
|
||||||
drw->root = root;
|
drw->root = root;
|
||||||
drw->w = w;
|
drw->w = w;
|
||||||
drw->h = h;
|
drw->h = h;
|
||||||
drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen));
|
drw->visual = visual;
|
||||||
drw->gc = XCreateGC(dpy, root, 0, NULL);
|
drw->depth = depth;
|
||||||
|
drw->cmap = cmap;
|
||||||
|
drw->drawable = XCreatePixmap(dpy, root, w, h, depth);
|
||||||
|
drw->gc = XCreateGC(dpy, drw->drawable, 0, NULL);
|
||||||
XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
|
XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
|
||||||
|
|
||||||
return drw;
|
return drw;
|
||||||
|
@ -87,7 +90,7 @@ drw_resize(Drw *drw, unsigned int w, unsigned int h)
|
||||||
drw->h = h;
|
drw->h = h;
|
||||||
if (drw->drawable)
|
if (drw->drawable)
|
||||||
XFreePixmap(drw->dpy, drw->drawable);
|
XFreePixmap(drw->dpy, drw->drawable);
|
||||||
drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen));
|
drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, drw->depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -181,22 +184,21 @@ drw_fontset_free(Fnt *font)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
drw_clr_create(Drw *drw, Clr *dest, const char *clrname)
|
drw_clr_create(Drw *drw, Clr *dest, const char *clrname, unsigned int alpha)
|
||||||
{
|
{
|
||||||
if (!drw || !dest || !clrname)
|
if (!drw || !dest || !clrname)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen),
|
if (!XftColorAllocName(drw->dpy, drw->visual, drw->cmap,
|
||||||
DefaultColormap(drw->dpy, drw->screen),
|
|
||||||
clrname, dest))
|
clrname, dest))
|
||||||
die("error, cannot allocate color '%s'", clrname);
|
die("error, cannot allocate color '%s'", clrname);
|
||||||
dest->pixel |= 0xff << 24;
|
dest->pixel = (dest->pixel & 0x00ffffffU) | (alpha << 24);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Wrapper to create color schemes. The caller has to call free(3) on the
|
/* Wrapper to create color schemes. The caller has to call free(3) on the
|
||||||
* returned color scheme when done using it. */
|
* returned color scheme when done using it. */
|
||||||
Clr *
|
Clr *
|
||||||
drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], size_t clrcount)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
Clr *ret;
|
Clr *ret;
|
||||||
|
@ -206,7 +208,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
for (i = 0; i < clrcount; i++)
|
for (i = 0; i < clrcount; i++)
|
||||||
drw_clr_create(drw, &ret[i], clrnames[i]);
|
drw_clr_create(drw, &ret[i], clrnames[i], alphas[i]);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,9 +266,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||||
} else {
|
} else {
|
||||||
XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel);
|
XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel);
|
||||||
XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
|
XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
|
||||||
d = XftDrawCreate(drw->dpy, drw->drawable,
|
d = XftDrawCreate(drw->dpy, drw->drawable, drw->visual, drw->cmap);
|
||||||
DefaultVisual(drw->dpy, drw->screen),
|
|
||||||
DefaultColormap(drw->dpy, drw->screen));
|
|
||||||
x += lpad;
|
x += lpad;
|
||||||
w -= lpad;
|
w -= lpad;
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,9 @@ typedef struct {
|
||||||
Display *dpy;
|
Display *dpy;
|
||||||
int screen;
|
int screen;
|
||||||
Window root;
|
Window root;
|
||||||
|
Visual *visual;
|
||||||
|
unsigned int depth;
|
||||||
|
Colormap cmap;
|
||||||
Drawable drawable;
|
Drawable drawable;
|
||||||
GC gc;
|
GC gc;
|
||||||
Clr *scheme;
|
Clr *scheme;
|
||||||
|
@ -27,7 +30,7 @@ typedef struct {
|
||||||
} Drw;
|
} Drw;
|
||||||
|
|
||||||
/* Drawable abstraction */
|
/* Drawable abstraction */
|
||||||
Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
|
Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap);
|
||||||
void drw_resize(Drw *drw, unsigned int w, unsigned int h);
|
void drw_resize(Drw *drw, unsigned int w, unsigned int h);
|
||||||
void drw_free(Drw *drw);
|
void drw_free(Drw *drw);
|
||||||
|
|
||||||
|
@ -39,8 +42,8 @@ unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int
|
||||||
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h);
|
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h);
|
||||||
|
|
||||||
/* Colorscheme abstraction */
|
/* Colorscheme abstraction */
|
||||||
void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
|
void drw_clr_create(Drw *drw, Clr *dest, const char *clrname, unsigned int alpha);
|
||||||
Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
|
Clr *drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], size_t clrcount);
|
||||||
|
|
||||||
/* Cursor abstraction */
|
/* Cursor abstraction */
|
||||||
Cur *drw_cur_create(Drw *drw, int shape);
|
Cur *drw_cur_create(Drw *drw, int shape);
|
||||||
|
|
|
@ -60,6 +60,7 @@
|
||||||
#define SPTAG(i) ((1 << LENGTH(tags)) << (i))
|
#define SPTAG(i) ((1 << LENGTH(tags)) << (i))
|
||||||
#define SPTAGMASK (((1 << LENGTH(scratchpads))-1) << LENGTH(tags))
|
#define SPTAGMASK (((1 << LENGTH(scratchpads))-1) << LENGTH(tags))
|
||||||
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
|
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
|
||||||
|
#define OPAQUE 0xffU
|
||||||
|
|
||||||
/* enums */
|
/* enums */
|
||||||
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
|
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
|
||||||
|
@ -245,6 +246,7 @@ static Monitor *wintomon(Window w);
|
||||||
static int xerror(Display *dpy, XErrorEvent *ee);
|
static int xerror(Display *dpy, XErrorEvent *ee);
|
||||||
static int xerrordummy(Display *dpy, XErrorEvent *ee);
|
static int xerrordummy(Display *dpy, XErrorEvent *ee);
|
||||||
static int xerrorstart(Display *dpy, XErrorEvent *ee);
|
static int xerrorstart(Display *dpy, XErrorEvent *ee);
|
||||||
|
static void xinitvisual();
|
||||||
static void zoom(const Arg *arg);
|
static void zoom(const Arg *arg);
|
||||||
|
|
||||||
/* variables */
|
/* variables */
|
||||||
|
@ -282,6 +284,11 @@ static Drw *drw;
|
||||||
static Monitor *mons, *selmon;
|
static Monitor *mons, *selmon;
|
||||||
static Window root, wmcheckwin;
|
static Window root, wmcheckwin;
|
||||||
|
|
||||||
|
static int useargb = 0;
|
||||||
|
static Visual *visual;
|
||||||
|
static int depth;
|
||||||
|
static Colormap cmap;
|
||||||
|
|
||||||
/* configuration, allows nested code to access above variables */
|
/* configuration, allows nested code to access above variables */
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
@ -1607,7 +1614,8 @@ setup(void)
|
||||||
sw = DisplayWidth(dpy, screen);
|
sw = DisplayWidth(dpy, screen);
|
||||||
sh = DisplayHeight(dpy, screen);
|
sh = DisplayHeight(dpy, screen);
|
||||||
root = RootWindow(dpy, screen);
|
root = RootWindow(dpy, screen);
|
||||||
drw = drw_create(dpy, screen, root, sw, sh);
|
xinitvisual();
|
||||||
|
drw = drw_create(dpy, screen, root, sw, sh, visual, depth, cmap);
|
||||||
if (!drw_fontset_create(drw, fonts, LENGTH(fonts)))
|
if (!drw_fontset_create(drw, fonts, LENGTH(fonts)))
|
||||||
die("no fonts could be loaded.");
|
die("no fonts could be loaded.");
|
||||||
lrpad = drw->fonts->h + horizpadbar;
|
lrpad = drw->fonts->h + horizpadbar;
|
||||||
|
@ -1635,7 +1643,7 @@ setup(void)
|
||||||
/* init appearance */
|
/* init appearance */
|
||||||
scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
|
scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
|
||||||
for (i = 0; i < LENGTH(colors); i++)
|
for (i = 0; i < LENGTH(colors); i++)
|
||||||
scheme[i] = drw_scm_create(drw, colors[i], 3);
|
scheme[i] = drw_scm_create(drw, colors[i], alphas[i], 3);
|
||||||
/* init bars */
|
/* init bars */
|
||||||
updatebars();
|
updatebars();
|
||||||
updatestatus();
|
updatestatus();
|
||||||
|
@ -1936,16 +1944,18 @@ updatebars(void)
|
||||||
Monitor *m;
|
Monitor *m;
|
||||||
XSetWindowAttributes wa = {
|
XSetWindowAttributes wa = {
|
||||||
.override_redirect = True,
|
.override_redirect = True,
|
||||||
.background_pixmap = ParentRelative,
|
.background_pixel = 0,
|
||||||
|
.border_pixel = 0,
|
||||||
|
.colormap = cmap,
|
||||||
.event_mask = ButtonPressMask|ExposureMask
|
.event_mask = ButtonPressMask|ExposureMask
|
||||||
};
|
};
|
||||||
XClassHint ch = {"dwm", "dwm"};
|
XClassHint ch = {"dwm", "dwm"};
|
||||||
for (m = mons; m; m = m->next) {
|
for (m = mons; m; m = m->next) {
|
||||||
if (m->barwin)
|
if (m->barwin)
|
||||||
continue;
|
continue;
|
||||||
m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen),
|
m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, depth,
|
||||||
CopyFromParent, DefaultVisual(dpy, screen),
|
InputOutput, visual,
|
||||||
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
|
CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa);
|
||||||
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
|
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
|
||||||
XMapRaised(dpy, m->barwin);
|
XMapRaised(dpy, m->barwin);
|
||||||
XSetClassHint(dpy, m->barwin, &ch);
|
XSetClassHint(dpy, m->barwin, &ch);
|
||||||
|
@ -2291,6 +2301,43 @@ xerrorstart(Display *dpy, XErrorEvent *ee)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
xinitvisual()
|
||||||
|
{
|
||||||
|
XVisualInfo *infos;
|
||||||
|
XRenderPictFormat *fmt;
|
||||||
|
int nitems;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
XVisualInfo tpl = {
|
||||||
|
.screen = screen,
|
||||||
|
.depth = 32,
|
||||||
|
.class = TrueColor
|
||||||
|
};
|
||||||
|
long masks = VisualScreenMask | VisualDepthMask | VisualClassMask;
|
||||||
|
|
||||||
|
infos = XGetVisualInfo(dpy, masks, &tpl, &nitems);
|
||||||
|
visual = NULL;
|
||||||
|
for(i = 0; i < nitems; i ++) {
|
||||||
|
fmt = XRenderFindVisualFormat(dpy, infos[i].visual);
|
||||||
|
if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
|
||||||
|
visual = infos[i].visual;
|
||||||
|
depth = infos[i].depth;
|
||||||
|
cmap = XCreateColormap(dpy, root, visual, AllocNone);
|
||||||
|
useargb = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XFree(infos);
|
||||||
|
|
||||||
|
if (! visual) {
|
||||||
|
visual = DefaultVisual(dpy, screen);
|
||||||
|
depth = DefaultDepth(dpy, screen);
|
||||||
|
cmap = DefaultColormap(dpy, screen);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
zoom(const Arg *arg)
|
zoom(const Arg *arg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,288 @@
|
||||||
|
From ad5887df95fda706291c81ee143d0786a1717b12 Mon Sep 17 00:00:00 2001
|
||||||
|
From: getimiskon <getimiskon@disroot.org>
|
||||||
|
Date: Sat, 1 Apr 2023 16:22:01 +0300
|
||||||
|
Subject: [PATCH] Allow dwm to have translucent bars, while keeping all the
|
||||||
|
text on it opaque, just like the alpha-patch for st. Updated for 348f655.
|
||||||
|
|
||||||
|
---
|
||||||
|
config.def.h | 7 +++++++
|
||||||
|
config.mk | 2 +-
|
||||||
|
drw.c | 26 ++++++++++++-----------
|
||||||
|
drw.h | 9 +++++---
|
||||||
|
dwm.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++------
|
||||||
|
5 files changed, 81 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/config.def.h b/config.def.h
|
||||||
|
index 9efa774..8b3789a 100644
|
||||||
|
--- a/config.def.h
|
||||||
|
+++ b/config.def.h
|
||||||
|
@@ -12,11 +12,18 @@ static const char col_gray2[] = "#444444";
|
||||||
|
static const char col_gray3[] = "#bbbbbb";
|
||||||
|
static const char col_gray4[] = "#eeeeee";
|
||||||
|
static const char col_cyan[] = "#005577";
|
||||||
|
+static const unsigned int baralpha = 0xd0;
|
||||||
|
+static const unsigned int borderalpha = OPAQUE;
|
||||||
|
static const char *colors[][3] = {
|
||||||
|
/* fg bg border */
|
||||||
|
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
||||||
|
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
|
||||||
|
};
|
||||||
|
+static const unsigned int alphas[][3] = {
|
||||||
|
+ /* fg bg border*/
|
||||||
|
+ [SchemeNorm] = { OPAQUE, baralpha, borderalpha },
|
||||||
|
+ [SchemeSel] = { OPAQUE, baralpha, borderalpha },
|
||||||
|
+};
|
||||||
|
|
||||||
|
/* tagging */
|
||||||
|
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
||||||
|
diff --git a/config.mk b/config.mk
|
||||||
|
index ba64d3d..d609c42 100644
|
||||||
|
--- a/config.mk
|
||||||
|
+++ b/config.mk
|
||||||
|
@@ -23,7 +23,7 @@ FREETYPEINC = /usr/include/freetype2
|
||||||
|
|
||||||
|
# includes and libs
|
||||||
|
INCS = -I${X11INC} -I${FREETYPEINC}
|
||||||
|
-LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS}
|
||||||
|
+LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lXrender
|
||||||
|
|
||||||
|
# flags
|
||||||
|
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700L -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
|
||||||
|
diff --git a/drw.c b/drw.c
|
||||||
|
index a58a2b4..d18e8d8 100644
|
||||||
|
--- a/drw.c
|
||||||
|
+++ b/drw.c
|
||||||
|
@@ -61,7 +61,7 @@ utf8decode(const char *c, long *u, size_t clen)
|
||||||
|
}
|
||||||
|
|
||||||
|
Drw *
|
||||||
|
-drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h)
|
||||||
|
+drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap)
|
||||||
|
{
|
||||||
|
Drw *drw = ecalloc(1, sizeof(Drw));
|
||||||
|
|
||||||
|
@@ -70,8 +70,11 @@ drw_create(Display *dpy, int screen, Window root, unsigned int w, unsigned int h
|
||||||
|
drw->root = root;
|
||||||
|
drw->w = w;
|
||||||
|
drw->h = h;
|
||||||
|
- drw->drawable = XCreatePixmap(dpy, root, w, h, DefaultDepth(dpy, screen));
|
||||||
|
- drw->gc = XCreateGC(dpy, root, 0, NULL);
|
||||||
|
+ drw->visual = visual;
|
||||||
|
+ drw->depth = depth;
|
||||||
|
+ drw->cmap = cmap;
|
||||||
|
+ drw->drawable = XCreatePixmap(dpy, root, w, h, depth);
|
||||||
|
+ drw->gc = XCreateGC(dpy, drw->drawable, 0, NULL);
|
||||||
|
XSetLineAttributes(dpy, drw->gc, 1, LineSolid, CapButt, JoinMiter);
|
||||||
|
|
||||||
|
return drw;
|
||||||
|
@@ -87,7 +90,7 @@ drw_resize(Drw *drw, unsigned int w, unsigned int h)
|
||||||
|
drw->h = h;
|
||||||
|
if (drw->drawable)
|
||||||
|
XFreePixmap(drw->dpy, drw->drawable);
|
||||||
|
- drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, DefaultDepth(drw->dpy, drw->screen));
|
||||||
|
+ drw->drawable = XCreatePixmap(drw->dpy, drw->root, w, h, drw->depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
@@ -181,21 +184,22 @@ drw_fontset_free(Fnt *font)
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
-drw_clr_create(Drw *drw, Clr *dest, const char *clrname)
|
||||||
|
+drw_clr_create(Drw *drw, Clr *dest, const char *clrname, unsigned int alpha)
|
||||||
|
{
|
||||||
|
if (!drw || !dest || !clrname)
|
||||||
|
return;
|
||||||
|
|
||||||
|
- if (!XftColorAllocName(drw->dpy, DefaultVisual(drw->dpy, drw->screen),
|
||||||
|
- DefaultColormap(drw->dpy, drw->screen),
|
||||||
|
+ if (!XftColorAllocName(drw->dpy, drw->visual, drw->cmap,
|
||||||
|
clrname, dest))
|
||||||
|
die("error, cannot allocate color '%s'", clrname);
|
||||||
|
+
|
||||||
|
+ dest->pixel = (dest->pixel & 0x00ffffffU) | (alpha << 24);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wrapper to create color schemes. The caller has to call free(3) on the
|
||||||
|
* returned color scheme when done using it. */
|
||||||
|
Clr *
|
||||||
|
-drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||||
|
+drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], size_t clrcount)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
Clr *ret;
|
||||||
|
@@ -205,7 +209,7 @@ drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
for (i = 0; i < clrcount; i++)
|
||||||
|
- drw_clr_create(drw, &ret[i], clrnames[i]);
|
||||||
|
+ drw_clr_create(drw, &ret[i], clrnames[i], alphas[i]);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -263,9 +267,7 @@ drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lp
|
||||||
|
} else {
|
||||||
|
XSetForeground(drw->dpy, drw->gc, drw->scheme[invert ? ColFg : ColBg].pixel);
|
||||||
|
XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h);
|
||||||
|
- d = XftDrawCreate(drw->dpy, drw->drawable,
|
||||||
|
- DefaultVisual(drw->dpy, drw->screen),
|
||||||
|
- DefaultColormap(drw->dpy, drw->screen));
|
||||||
|
+ d = XftDrawCreate(drw->dpy, drw->drawable, drw->visual, drw->cmap);
|
||||||
|
x += lpad;
|
||||||
|
w -= lpad;
|
||||||
|
}
|
||||||
|
diff --git a/drw.h b/drw.h
|
||||||
|
index 6471431..2143533 100644
|
||||||
|
--- a/drw.h
|
||||||
|
+++ b/drw.h
|
||||||
|
@@ -20,6 +20,9 @@ typedef struct {
|
||||||
|
Display *dpy;
|
||||||
|
int screen;
|
||||||
|
Window root;
|
||||||
|
+ Visual *visual;
|
||||||
|
+ unsigned int depth;
|
||||||
|
+ Colormap cmap;
|
||||||
|
Drawable drawable;
|
||||||
|
GC gc;
|
||||||
|
Clr *scheme;
|
||||||
|
@@ -27,7 +30,7 @@ typedef struct {
|
||||||
|
} Drw;
|
||||||
|
|
||||||
|
/* Drawable abstraction */
|
||||||
|
-Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h);
|
||||||
|
+Drw *drw_create(Display *dpy, int screen, Window win, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap);
|
||||||
|
void drw_resize(Drw *drw, unsigned int w, unsigned int h);
|
||||||
|
void drw_free(Drw *drw);
|
||||||
|
|
||||||
|
@@ -39,8 +42,8 @@ unsigned int drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int
|
||||||
|
void drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h);
|
||||||
|
|
||||||
|
/* Colorscheme abstraction */
|
||||||
|
-void drw_clr_create(Drw *drw, Clr *dest, const char *clrname);
|
||||||
|
-Clr *drw_scm_create(Drw *drw, const char *clrnames[], size_t clrcount);
|
||||||
|
+void drw_clr_create(Drw *drw, Clr *dest, const char *clrname, unsigned int alpha);
|
||||||
|
+Clr *drw_scm_create(Drw *drw, const char *clrnames[], const unsigned int alphas[], size_t clrcount);
|
||||||
|
|
||||||
|
/* Cursor abstraction */
|
||||||
|
Cur *drw_cur_create(Drw *drw, int shape);
|
||||||
|
diff --git a/dwm.c b/dwm.c
|
||||||
|
index c2bd871..3b34de8 100644
|
||||||
|
--- a/dwm.c
|
||||||
|
+++ b/dwm.c
|
||||||
|
@@ -56,6 +56,7 @@
|
||||||
|
#define HEIGHT(X) ((X)->h + 2 * (X)->bw)
|
||||||
|
#define TAGMASK ((1 << LENGTH(tags)) - 1)
|
||||||
|
#define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad)
|
||||||
|
+#define OPAQUE 0xffU
|
||||||
|
|
||||||
|
/* enums */
|
||||||
|
enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
|
||||||
|
@@ -232,6 +233,7 @@ static Monitor *wintomon(Window w);
|
||||||
|
static int xerror(Display *dpy, XErrorEvent *ee);
|
||||||
|
static int xerrordummy(Display *dpy, XErrorEvent *ee);
|
||||||
|
static int xerrorstart(Display *dpy, XErrorEvent *ee);
|
||||||
|
+static void xinitvisual();
|
||||||
|
static void zoom(const Arg *arg);
|
||||||
|
|
||||||
|
/* variables */
|
||||||
|
@@ -268,6 +270,11 @@ static Drw *drw;
|
||||||
|
static Monitor *mons, *selmon;
|
||||||
|
static Window root, wmcheckwin;
|
||||||
|
|
||||||
|
+static int useargb = 0;
|
||||||
|
+static Visual *visual;
|
||||||
|
+static int depth;
|
||||||
|
+static Colormap cmap;
|
||||||
|
+
|
||||||
|
/* configuration, allows nested code to access above variables */
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
|
@@ -1558,7 +1565,8 @@ setup(void)
|
||||||
|
sw = DisplayWidth(dpy, screen);
|
||||||
|
sh = DisplayHeight(dpy, screen);
|
||||||
|
root = RootWindow(dpy, screen);
|
||||||
|
- drw = drw_create(dpy, screen, root, sw, sh);
|
||||||
|
+ xinitvisual();
|
||||||
|
+ drw = drw_create(dpy, screen, root, sw, sh, visual, depth, cmap);
|
||||||
|
if (!drw_fontset_create(drw, fonts, LENGTH(fonts)))
|
||||||
|
die("no fonts could be loaded.");
|
||||||
|
lrpad = drw->fonts->h;
|
||||||
|
@@ -1586,7 +1594,7 @@ setup(void)
|
||||||
|
/* init appearance */
|
||||||
|
scheme = ecalloc(LENGTH(colors), sizeof(Clr *));
|
||||||
|
for (i = 0; i < LENGTH(colors); i++)
|
||||||
|
- scheme[i] = drw_scm_create(drw, colors[i], 3);
|
||||||
|
+ scheme[i] = drw_scm_create(drw, colors[i], alphas[i], 3);
|
||||||
|
/* init bars */
|
||||||
|
updatebars();
|
||||||
|
updatestatus();
|
||||||
|
@@ -1813,16 +1821,18 @@ updatebars(void)
|
||||||
|
Monitor *m;
|
||||||
|
XSetWindowAttributes wa = {
|
||||||
|
.override_redirect = True,
|
||||||
|
- .background_pixmap = ParentRelative,
|
||||||
|
+ .background_pixel = 0,
|
||||||
|
+ .border_pixel = 0,
|
||||||
|
+ .colormap = cmap,
|
||||||
|
.event_mask = ButtonPressMask|ExposureMask
|
||||||
|
};
|
||||||
|
XClassHint ch = {"dwm", "dwm"};
|
||||||
|
for (m = mons; m; m = m->next) {
|
||||||
|
if (m->barwin)
|
||||||
|
continue;
|
||||||
|
- m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, DefaultDepth(dpy, screen),
|
||||||
|
- CopyFromParent, DefaultVisual(dpy, screen),
|
||||||
|
- CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);
|
||||||
|
+ m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 0, depth,
|
||||||
|
+ InputOutput, visual,
|
||||||
|
+ CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa);
|
||||||
|
XDefineCursor(dpy, m->barwin, cursor[CurNormal]->cursor);
|
||||||
|
XMapRaised(dpy, m->barwin);
|
||||||
|
XSetClassHint(dpy, m->barwin, &ch);
|
||||||
|
@@ -2120,6 +2130,43 @@ xerrorstart(Display *dpy, XErrorEvent *ee)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+void
|
||||||
|
+xinitvisual()
|
||||||
|
+{
|
||||||
|
+ XVisualInfo *infos;
|
||||||
|
+ XRenderPictFormat *fmt;
|
||||||
|
+ int nitems;
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ XVisualInfo tpl = {
|
||||||
|
+ .screen = screen,
|
||||||
|
+ .depth = 32,
|
||||||
|
+ .class = TrueColor
|
||||||
|
+ };
|
||||||
|
+ long masks = VisualScreenMask | VisualDepthMask | VisualClassMask;
|
||||||
|
+
|
||||||
|
+ infos = XGetVisualInfo(dpy, masks, &tpl, &nitems);
|
||||||
|
+ visual = NULL;
|
||||||
|
+ for(i = 0; i < nitems; i ++) {
|
||||||
|
+ fmt = XRenderFindVisualFormat(dpy, infos[i].visual);
|
||||||
|
+ if (fmt->type == PictTypeDirect && fmt->direct.alphaMask) {
|
||||||
|
+ visual = infos[i].visual;
|
||||||
|
+ depth = infos[i].depth;
|
||||||
|
+ cmap = XCreateColormap(dpy, root, visual, AllocNone);
|
||||||
|
+ useargb = 1;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ XFree(infos);
|
||||||
|
+
|
||||||
|
+ if (! visual) {
|
||||||
|
+ visual = DefaultVisual(dpy, screen);
|
||||||
|
+ depth = DefaultDepth(dpy, screen);
|
||||||
|
+ cmap = DefaultColormap(dpy, screen);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void
|
||||||
|
zoom(const Arg *arg)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.40.0
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
PREFIX ?= /usr/local
|
PREFIX ?= /usr/local
|
||||||
CC ?= cc
|
CC ?= cc
|
||||||
|
|
||||||
output: dwmblocks.c blocks.def.h blocks.h
|
output: dwmblocks.c
|
||||||
${CC} `pkg-config --cflags x11 --libs x11` dwmblocks.c -o dwmblocks
|
${CC} `pkg-config --cflags x11 --libs x11` dwmblocks.c -o dwmblocks
|
||||||
blocks.h:
|
|
||||||
cp -v blocks.def.h $@
|
|
||||||
clean:
|
clean:
|
||||||
rm -fv *.o *.gch dwmblocks
|
rm -fv *.o *.gch dwmblocks
|
||||||
install: output
|
install: output
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
//Modify this file to change what commands output to your statusbar, and recompile using the make command.
|
//Modify this file to change what commands output to your statusbar, and recompile using the make command.
|
||||||
static const Block blocks[] = {
|
static const Block blocks[] = {
|
||||||
/*Command*/ /*Update Interval*/ /*Update Signal*/
|
/*Command*/ /*Update Interval*/ /*Update Signal*/
|
||||||
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_layout", 5, 5},
|
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_layout", 0, 10},
|
||||||
|
|
||||||
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_battery", 10, 10},
|
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_battery", 10, 1},
|
||||||
|
|
||||||
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_brightness", 5, 5},
|
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_brightness", 0, 10},
|
||||||
|
|
||||||
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_volume", 1, 0},
|
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_volume", 0, 10},
|
||||||
|
|
||||||
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_clock", 1, 0},
|
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_clock", 60, 1},
|
||||||
|
|
||||||
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_wifi", 10, 10},
|
{"", "$HOME/.config/suckless/dwmblocks/scripts/block_wifi", 5, 4},
|
||||||
};
|
};
|
||||||
|
|
||||||
//sets delimeter between status commands. NULL character ('\0') means no delimeter.
|
//sets delimeter between status commands. NULL character ('\0') means no delimeter.
|
||||||
|
|
|
@ -8,21 +8,93 @@ elif [ "${currntpwr}" = "balanced" ]; then
|
||||||
elif [ "${currntpwr}" = "power-saver" ]; then
|
elif [ "${currntpwr}" = "power-saver" ]; then
|
||||||
pwr=" | PowerSaver "
|
pwr=" | PowerSaver "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for battery in /sys/class/power_supply/BAT?*; do
|
for battery in /sys/class/power_supply/BAT?*; do
|
||||||
# If non-first battery, print a space separator.
|
# If non-first battery, print a space separator.
|
||||||
[ -n "${capacity+x}" ] && printf " "
|
[ -n "${capacity+x}" ] && printf " "
|
||||||
|
|
||||||
# Sets up the status and capacity
|
# Sets up the status and capacity
|
||||||
case "$(cat "$battery/status" 2>&1)" in
|
case "$(cat "$battery/status" 2>&1)" in
|
||||||
"Full") status=" " ;;
|
"Full")
|
||||||
"Discharging") status=" " ;;
|
status=" "
|
||||||
"Charging") status=" " ;;
|
;;
|
||||||
"Not charging") status=" " ;;
|
"Discharging")
|
||||||
"Unknown") status=" " ;;
|
# Calculates the percentage of remaining charge
|
||||||
|
percentage="$(cat "$battery/capacity" 2>&1)"
|
||||||
|
# Updates the status icon based on the battery percentage
|
||||||
|
if [ "$percentage" -lt 20 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 30 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 40 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 50 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 60 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 70 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 80 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 90 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"Charging")
|
||||||
|
# Calculates the percentage of remaining charge
|
||||||
|
percentage="$(cat "$battery/capacity" 2>&1)"
|
||||||
|
# Updates the status icon based on the battery percentage while charging
|
||||||
|
if [ "$percentage" -lt 10 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 20 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 30 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 40 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 50 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 60 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 70 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 80 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
elif [ "$percentage" -lt 90 ]
|
||||||
|
then
|
||||||
|
status=" "
|
||||||
|
else
|
||||||
|
status=" "
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"Not charging")
|
||||||
|
status=" "
|
||||||
|
;;
|
||||||
|
"Unknown")
|
||||||
|
status=" "
|
||||||
|
;;
|
||||||
*) exit 1 ;;
|
*) exit 1 ;;
|
||||||
esac
|
esac
|
||||||
capacity="$(cat "$battery/capacity" 2>&1)"
|
|
||||||
# Will make a warn variable if discharging and low
|
# Will make a warn variable if discharging and low
|
||||||
[ "$status" = "" ] && [ "$capacity" -le 100 ] && warn=""
|
[ "$status" = " " ] && [ "$percentage" -le 10 ] && warn=""
|
||||||
|
|
||||||
# Prints the info
|
# Prints the info
|
||||||
printf "%s%s%d%%%s" "$status" "$warn " "$capacity" "$pwr"; unset warn
|
printf "%s%s%d%%%s" "$status" "$warn " "$percentage" "$pwr"; unset warn
|
||||||
done && printf "\\n"
|
done && printf "\\n"
|
||||||
|
|
|
@ -1,10 +1,24 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
brt=$(xbacklight -get)
|
brt=$(xbacklight -get)
|
||||||
if [ "$brt" = "100.000000" ]; then
|
if [ "${brt%.*}" -eq 100 ]; then
|
||||||
icon=""
|
icon=""
|
||||||
elif [ "$brt" \> "50%.*" ]; then
|
elif [ "${brt%.*}" -ge 90 ]; then
|
||||||
icon=""
|
icon=""
|
||||||
elif [ "$brt" \< "49%.*" ]; then
|
elif [ "${brt%.*}" -ge 80 ]; then
|
||||||
icon=""
|
icon=""
|
||||||
|
elif [ "${brt%.*}" -ge 70 ]; then
|
||||||
|
icon=""
|
||||||
|
elif [ "${brt%.*}" -ge 60 ]; then
|
||||||
|
icon=""
|
||||||
|
elif [ "${brt%.*}" -ge 50 ]; then
|
||||||
|
icon=""
|
||||||
|
elif [ "${brt%.*}" -ge 40 ]; then
|
||||||
|
icon=""
|
||||||
|
elif [ "${brt%.*}" -ge 30 ]; then
|
||||||
|
icon=""
|
||||||
|
elif [ "${brt%.*}" -ge 20 ]; then
|
||||||
|
icon=""
|
||||||
|
else
|
||||||
|
icon=""
|
||||||
fi
|
fi
|
||||||
echo " $icon ${brt%.*}% "
|
echo " $icon ${brt%.*}% "
|
||||||
|
|
|
@ -1,4 +1,20 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
date="$(date +%d/%m/%y)"
|
date="$(date +%d/%m/%y)"
|
||||||
clock="$(date +%R)"
|
hour="$(date +%I)"
|
||||||
echo " $date | $clock "
|
clock_icon=""
|
||||||
|
case $hour in
|
||||||
|
"01") clock_icon="";;
|
||||||
|
"02") clock_icon="";;
|
||||||
|
"03") clock_icon="";;
|
||||||
|
"04") clock_icon="";;
|
||||||
|
"05") clock_icon="";;
|
||||||
|
"06") clock_icon="";;
|
||||||
|
"07") clock_icon="";;
|
||||||
|
"08") clock_icon="";;
|
||||||
|
"09") clock_icon="";;
|
||||||
|
"10") clock_icon="";;
|
||||||
|
"11") clock_icon="";;
|
||||||
|
"12") clock_icon="";;
|
||||||
|
esac
|
||||||
|
clock="$(date +%I:%M%p | sed 's/^0//')"
|
||||||
|
echo " $clock_icon $clock | $date "
|
||||||
|
|
|
@ -1,11 +1,34 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
get_wifi_strength() {
|
||||||
|
# Retrieves the wifi signal strength in dBm
|
||||||
|
strength=$(nmcli -t -f active,ssid,signal dev wifi | grep yes | cut -d ":" -f3)
|
||||||
|
# Converts dBm to percentage (0% to 100%)
|
||||||
|
if [ "$strength" -le 30 ]; then
|
||||||
|
echo "1"
|
||||||
|
elif [ "$strength" -le 60 ]; then
|
||||||
|
echo "2"
|
||||||
|
elif [ "$strength" -le 90 ]; then
|
||||||
|
echo "3"
|
||||||
|
else
|
||||||
|
echo "4"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
constate=$(nmcli dev | grep wifi | sed 's/ \{2,\}/|/g' | cut -d '|' -f3 | head -1)
|
constate=$(nmcli dev | grep wifi | sed 's/ \{2,\}/|/g' | cut -d '|' -f3 | head -1)
|
||||||
currentwfi=$(nmcli dev | grep wifi | sed 's/ \{2,\}/|/g' | cut -d '|' -f4 | head -1)
|
currentwfi=$(nmcli dev | grep wifi | sed 's/ \{2,\}/|/g' | cut -d '|' -f4 | head -1)
|
||||||
|
|
||||||
if [ "$constate" = "disconnected" ]; then
|
if [ "$constate" = "disconnected" ]; then
|
||||||
echo " "
|
echo " "
|
||||||
elif [ "$constate" = "connected" ]; then
|
elif [ "$constate" = "connected" ]; then
|
||||||
echo " $currentwfi"
|
strength=$(get_wifi_strength)
|
||||||
|
case "$strength" in
|
||||||
|
"1") icon=" " ;;
|
||||||
|
"2") icon=" " ;;
|
||||||
|
"3") icon=" " ;;
|
||||||
|
"4") icon=" " ;;
|
||||||
|
esac
|
||||||
|
echo "$icon$currentwfi"
|
||||||
else
|
else
|
||||||
echo " "
|
echo " "
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -98,7 +98,7 @@ char *termname = "st-256color";
|
||||||
unsigned int tabspaces = 4;
|
unsigned int tabspaces = 4;
|
||||||
|
|
||||||
/* bg opacity */
|
/* bg opacity */
|
||||||
float alpha = 0.98;
|
float alpha = 0.9;
|
||||||
|
|
||||||
/* Terminal colors (16 first used in escape sequence) */
|
/* Terminal colors (16 first used in escape sequence) */
|
||||||
static const char *colorname[] = {
|
static const char *colorname[] = {
|
||||||
|
|
|
@ -30,6 +30,7 @@ if [ -f "$usermodmap" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
### ENVIRONMENT VARIABLES
|
### ENVIRONMENT VARIABLES
|
||||||
|
export BROWSER="brave"
|
||||||
export MOZ_USE_XINPUT2=1
|
export MOZ_USE_XINPUT2=1
|
||||||
export XDG_DATA_HOME="${XDG_DATA_HOME:="$HOME/.local/share"}"
|
export XDG_DATA_HOME="${XDG_DATA_HOME:="$HOME/.local/share"}"
|
||||||
export XDG_CACHE_HOME="${XDG_CACHE_HOME:="$HOME/.cache"}"
|
export XDG_CACHE_HOME="${XDG_CACHE_HOME:="$HOME/.cache"}"
|
||||||
|
|
Loading…
Reference in a new issue