Mon Dec 18 09:27:13 PM +04 2023 +'%Y-%m-%d %H:%M:%S'

This commit is contained in:
2023-12-18 21:27:13 +04:00
commit 84bcd9fb9e
26 changed files with 1086 additions and 0 deletions

19
.bashrc Normal file
View File

@@ -0,0 +1,19 @@
#
# ~/.bashrc
#
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
# alias ls='ls --color=auto'
# alias grep='grep --color=auto'
# PS1='[\u@\h \W]\$ '
(cat ~/.cache/wal/sequences &)
. "${HOME}/.cache/wal/colors.sh"
alias dmenu_wal='dmenu_run -nb "$color0" -nf "$color15" -sb "$color1" -sf "$color15"'
#export SUDO_ASKPASS=".scripts/dpass.sh"
#alias sudo="sudo -A"

26
.config/bspwm/bspwmrc Executable file
View File

@@ -0,0 +1,26 @@
#! /bin/sh
pgrep -x sxhkd > /dev/null || sxhkd -c ~/.config/sxhkd/sxhkdrc &
. "${HOME}/.cache/wal/colors.sh"
bspc monitor -d 1 2 3 4 5
bspc config border_width 1
bspc config window_gap 5
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config normal_border_color "$color0"
bspc config active_border_color "$color1"
bspc config focused_border_color "$color2"
bspc config top_padding 30
# bspc rule -a Gimp desktop='^8' state=floating follow=on
# bspc rule -a Chromium desktop='^2'
# bspc rule -a mplayer2 state=floating
# bspc rule -a Kupfer.py focus=on
# bspc rule -a Screenkey manage=off

View File

@@ -0,0 +1,78 @@
gesture swipe right 3 bspc desktop -f prev
gesture swipe left 3 bspc desktop -f next
gesture swipe down 3 /bin/sh -c "polybar-msg cmd show; bspc config top_padding 30"
gesture swipe up 3 /bin/sh -c "polybar-msg cmd hide; bspc config top_padding 0"
gesture swipe down 4 pactl set-sink-volume @DEFAULT_SINK@ -10%
gesture swipe up 4 pactl set-sink-volume @DEFAULT_SINK@ +10%
# gesture hold on 4 pactl set-sink-mute @DEFAULT_SINK@ toggle
# action motion [finger_count] command
#
# where action and motion is either:
# swipe up
# swipe down
# swipe left
# swipe right
# swipe left_up
# swipe left_down
# swipe right_up
# swipe right_down
# pinch in
# pinch out
# pinch clockwise
# pinch anticlockwise
# hold on (hold gesture available since libinput 1.19)
# gesture swipe up _internal ws_up
# gesture swipe up xdotool key super+Page_Down
# gesture swipe down _internal ws_down
# gesture swipe down xdotool key super+Page_Up
# gesture swipe left xdotool key alt+Right
# gesture swipe right xdotool key alt+Left
# gesture hold on 4 xdotool key control+t
# Jump to next open browser tab
# gesture swipe right_up xdotool key control+Tab
# Jump to previous open browser tab
# gesture swipe left_up xdotool key control+shift+Tab
# Close current browser tab
# gesture swipe left_down xdotool key control+w
# Reopen and jump to last closed browser tab
# gesture swipe right_down xdotool key control+shift+t
# Example to change audio volume (this works on both Wayland and Xorg):
# Note each swipe only steps volume once.
# swipe up 4 amixer set Master "8%+"
# swipe down 4 amixer set Master "8%-"
# GNOME SHELL open/close overview (works for GNOME on Xorg only)
# gesture pinch in xdotool key super+s
# gesture pinch out xdotool key super+s
# Optional extended pinch gestures:
# gesture pinch clockwise <whatever command>
# gesture pinch anticlockwise <whatever command>
# device all
###############################################################################
# You can set a minimum travel distance threshold before swipe gestures
# are actioned using the swipe_threshold configuration command.
# Specify this value in dots. The default is 0.
# E.g. set it to 100 dots with "swipe_threshold 100".
# swipe_threshold 0
###############################################################################
# You can set a timeout on gestures from start to end. The default is
# the value commented below. It can be any value in float secs >= 0.
# 0 = no timeout. E.g. set it to 2 secs with "timeout 2".
# timeout 1.5

View File

@@ -0,0 +1,15 @@
right: run bspc node -f east
left: run bspc node -f west
up: run bspc node -f north
down: run bspc node -f south
git commit: run git commit -m "`date`+'%Y-%m-%d %H:%M:%S'"
git push: run git push
git commit and push: run git commit -m "`date`+'%Y-%m-%d %H:%M:%S'" \
run git push
mute: run pactl set-sink-mute @DEFAULT_SINK@ toggle
power off: run export SUDOASKPASS=".scripts/dpass.sh" && sudo -A poweroff
reboot: run export SUDOASKPASS=".scripts/dpass.sh" && sudo -A reboot

3
.config/nvim/init.lua Normal file
View File

@@ -0,0 +1,3 @@
require("plugins")
require("base")
require("keymaps")

View File

@@ -0,0 +1,20 @@
{
"gitsigns.nvim": { "branch": "main", "commit": "d195f0c35ced5174d3ecce1c4c8ebb3b5bc23fa9" },
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
"lightline.vim": { "branch": "master", "commit": "1c6b455c0445b8bc1c4c16ba569a43c6348411cc" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "9453e3d6cd2ca45d96e20f343e8f1b927364b630" },
"mason-registry": { "branch": "main", "commit": "600111e66cbf10da94c1ccc3af1445d86e01ab44" },
"mason.nvim": { "branch": "main", "commit": "41e75af1f578e55ba050c863587cffde3556ffa6" },
"neo-tree.nvim": { "branch": "v3.x", "commit": "230ff118613fa07138ba579b89d13ec2201530b9" },
"nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" },
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
"nvim-lspconfig": { "branch": "master", "commit": "f451052bd6804e9e5ccd0ac874d7df8d3d4c55b9" },
"nvim-treesitter": { "branch": "master", "commit": "78d75bce03f218ee30aedb6e24e3ec1189a3e9ff" },
"nvim-web-devicons": { "branch": "master", "commit": "8b2e5ef9eb8a717221bd96cb8422686d65a09ed5" },
"plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"vim-commentary": { "branch": "master", "commit": "e87cd90dc09c2a203e13af9704bd0ef79303d755" },
"vim-plugin-ruscmd": { "branch": "master", "commit": "e952abbea092e420b128936a0c284fb522612c3a" },
"wal.vim": { "branch": "master", "commit": "c72ba0d18946f29aab9c95eb6975d321c68b3681" },
"which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
}

97
.config/nvim/lua/base.lua Normal file
View File

@@ -0,0 +1,97 @@
local cmd = vim.cmd -- execute Vim commands
local exec = vim.api.nvim_exec -- execute Vimscript
local g = vim.g -- global variables
local opt = vim.opt -- global/buffer/windows-scoped options
-----------------------------------------------------------
-- Главные
-----------------------------------------------------------
-- Командная клавиша
vim.keymap.set("n", " ", "<Nop>", { silent = true, remap = false })
g.mapleader = " "
-- Откллючить поддержку со старым vi
g.nocompatible = true
-- Не делать бекап файла
g.nobackup = true
g.nowritebackup = true
-- Кодировка по умолчанию
g.encoding = "utf-8"
-- Разделитель на 80 символов
opt.colorcolumn = '80'
-- Словари рус eng
opt.spelllang = { 'en_us', 'ru' }
-- Включаем нумерацию строк
opt.number = true
-- Вкл. относительную нумерацию строк
opt.relativenumber = true
-- Возможность отката назад
opt.undofile = true
-- vertical split вправо
opt.splitright = true
-- horizontal split вниз
opt.splitbelow = true
-- Отступ во время скрола
opt.scrolloff = 10
-- Показать парную скобку
opt.showmatch = true
-- Всегда показывать столбец для значков
opt.signcolumn = "yes"
-----------------------------------------------------------
-- Цветовая схема
-----------------------------------------------------------
opt.termguicolors = false -- Нужно для поддежки pywal
-- Устанавливаем тему из pywal
cmd([[
highlight ColorColumn ctermbg=16
]])
-----------------------------------------------------------
-- Табы и отступы
-----------------------------------------------------------
cmd([[
filetype indent plugin on
syntax enable
]])
-- Использовать пробелы вместо табуляции
opt.expandtab = true
-- Количество пробелов используемых для отступа
opt.shiftwidth = 4
-- 1 таб = 4 пробелам
opt.tabstop = 4
-- Добавлять отступ на новых строках
opt.smartindent = true
-- Не автокомментировать новые строки
cmd [[au BufEnter * set fo-=c fo-=r fo-=o]]
-- Удалить маркер длинны строки для выбранных типов файлов
cmd [[autocmd FileType text,markdown,html,xhtml,javascript setlocal cc=0]]
-- 2 пробела для выбранных типов файлов
cmd [[
autocmd FileType xml,html,xhtml,css,scss,javascript,lua,yaml,htmljinja setlocal shiftwidth=2 tabstop=2
]]
-----------------------------------------------------------
-- Полезные фишки
-----------------------------------------------------------
-- Запоминает где nvim последний раз редактировал файл
cmd [[
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
]]
-- Подсвечивает на доли секунды скопированную часть текста
exec([[
augroup YankHighlight
autocmd!
autocmd TextYankPost * silent! lua vim.highlight.on_yank{higroup="IncSearch", timeout=700}
augroup end
]], false)

View File

@@ -0,0 +1,113 @@
local default_opts = { noremap = true, silent = true }
local function map(mode, l, r, opts)
opts = opts or default_opts
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
local gs = package.loaded.gitsigns
-----------------------------------------------------------
-- Базовые
-----------------------------------------------------------
-- Системный буфер обмена
-- map('v', '<C-y>', '"+y', {})
-- 'Нажимает' на ESC при быстром нажатии jj
map('i', 'оо', '<Esc>')
map('i', 'jj', '<Esc>')
-- Отключение стрелочек. Использовать hjkl
map('', '<up>', ':echoe "Use k"<CR>', {noremap = true, silent = false})
map('', '<down>', ':echoe "Use j"<CR>', {noremap = true, silent = false})
map('', '<left>', ':echoe "Use h"<CR>', {noremap = true, silent = false})
map('', '<right>', ':echoe "Use l"<CR>', {noremap = true, silent = false})
-- Автоформат + сохранение по CTRL-s , как в нормальном, так и в insert режиме
-- map('n', '<C-s>', ':Autoformat<CR>:w<CR>', default_opts)
-- map('i', '<C-s>', '<esc>:Autoformat<CR>:w<CR>', default_opts)
-- Переключение вкладок с помощью TAB или shift-tab (akinsho/bufferline.nvim)
-- map('n', '<Tab>', ':BufferLineCycleNext<CR>', default_opts)
-- map('n', '<S-Tab>', ':BufferLineCyclePrev<CR>', default_opts)
-- Пролистнуть на страницу вниз / вверх (как в браузерах)
-- map('n', '<Space>', '<PageDown> zz', default_opts)
-- map('n', '<C-Space>', '<PageUp> zz', default_opts)
-- " Переводчик рус -> eng
-- map('v', 't', '<Plug>(VTranslate)', {})
-----------------------------------------------------------
-- Плагины
-----------------------------------------------------------
-- telescope
local builtin =
map('n', '<leader>ff', require('telescope.builtin').find_files)
map('n', '<leader>fg', require('telescope.builtin').live_grep)
-- vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
-- vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
-- NeoTree
map('n', '<leader>t', ':Neotree toggle<CR>')
-- GitSigns
map('n', ']c', function()
if vim.wo.diff then return ']c' end
vim.schedule(function() gs.next_hunk() end)
return '<Ignore>'
end, {expr=true})
map('n', '[c', function()
if vim.wo.diff then return '[c' end
vim.schedule(function() gs.prev_hunk() end)
return '<Ignore>'
end, {expr=true})
map('n', '<leader>gs', gs.stage_hunk)
map('n', '<leader>gr', gs.reset_hunk)
-- map('v', '<leader>hs', function() gs.stage_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
-- map('v', '<leader>hr', function() gs.reset_hunk {vim.fn.line('.'), vim.fn.line('v')} end)
map('n', '<leader>gS', gs.stage_buffer)
map('n', '<leader>gu', gs.undo_stage_hunk)
-- map('n', '<leader>hR', gs.reset_buffer)
map('n', '<leader>gp', gs.preview_hunk)
map('n', '<leader>gb', function() gs.blame_line{full=true} end)
-- map('n', '<leader>tb', gs.toggle_current_line_blame)
map('n', '<leader>gd', gs.diffthis)
map('n', '<leader>gD', function() gs.diffthis('~') end)
map('n', '<leader>gtd', gs.toggle_deleted)
-----------------------------------------------------------
-- F1 .. F12
-----------------------------------------------------------
-- По F1 очищаем последний поиск с подсветкой
map('n', '<F1>', ':nohl<CR>')
-- <F3> перечитать конфигурацию nvim
map('n', '<F3>', ':so ~/.config/nvim/init.lua<CR>:so ~/.config/nvim/lua/plugins.lua<CR>:so ~/.config/nvim/lua/base.lua<CR>:so ~/.config/nvim/lua/keymaps.lua<CR>', { noremap = true })
-- <S-F3> Открыть всю nvim конфигурацию для редактирования
map('n', '<S-F3>', ':e ~/.config/nvim/init.lua<CR>:e ~/.config/nvim/lua/plugins.lua<CR>:e ~/.config/nvim/lua/base.lua<CR>:e ~/.config/nvim/lua/keymaps.lua<CR>', { noremap = true })
-- <F4> Поиск слова под курсором
map('n', '<F4>', [[<cmd>lua require('telescope.builtin').grep_string()<cr>]])
-- <S-F4> Поиск слова в модальном окошке
map('n', '<S-F4>', [[<cmd>lua require('telescope.builtin').live_grep()<cr>]])
-- <F5> разные вариации нумераций строк, можно переключаться
map('n', '<F5>', ':exec &nu==&rnu? "se nu!" : "se rnu!"<CR>')
-- <F6> дерево файлов.
map('n', '<F6>', ':NvimTreeRefresh<CR>:NvimTreeToggle<CR>')
-- <F8> Показ дерева классов и функций, плагин majutsushi/tagbar
map('n', '<F8>', ':TagbarToggle<CR>')
-- <F11> Проверка орфографии для русского и английского языка
map('n', '<F11>', ':set spell!<CR>')
map('i', '<F11>', '<C-O>:set spell!<CR>')

View File

@@ -0,0 +1,116 @@
-- Установка lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
-- Загрука темы из pywal
{ "dylanaraps/wal.vim",
priority = 1000,
config = function()
vim.cmd([[colorscheme wal]])
end,
},
-- Подсветка синтаксиса
{ "nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function ()
local configs = require("nvim-treesitter.configs")
configs.setup({
ensure_installed = {
"html", "markdown", "latex",
"css", "scss", -- "less", not found
"javascript", -- "jsx", not found
"typescript", "tsx",
"python", "lua",
"vim", "vimdoc", "query",
"bash",
"c",
"json", "yaml",
},
sync_install = false,
highlight = { enable = true },
incremental_selection = { enable = true },
indent = { enable = true },
})
end
},
{ 'neovim/nvim-lspconfig',
dependencies = {
'williamboman/mason.nvim',
'mason-org/mason-registry',
'williamboman/mason-lspconfig.nvim',
'jose-elias-alvarez/null-ls.nvim',
},
config = function()
local lspconfig = require('lspconfig')
require("mason").setup()
require("mason-lspconfig").setup()
require("null-ls").setup()
end,
},
-- Диалоговое окно поиска
{ 'nvim-telescope/telescope.nvim', tag = '0.1.5',
dependencies = { 'nvim-lua/plenary.nvim' },
lazy = true,
},
-- Файловый менеджер
-- ? в окне проводника для горячих клавиш
{
'nvim-neo-tree/neo-tree.nvim',
lazy = true,
cmd = 'Neotree',
branch = "v3.x",
dependencies = {
'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons',
'MunifTanjim/nui.nvim',
-- '3rd/image.nvim',
},
},
-- Строка состояния
-- (можно конфигурировать, пока не разобрался)
{ 'itchyny/lightline.vim' },
-- Быстрое комментирование
-- gcc - закоментировать строку
-- (VISUAL) gc - закоментировать выделенные строки
{ 'tpope/vim-commentary' },
-- Поддержка git
{ 'lewis6991/gitsigns.nvim',
config = function()
require('gitsigns').setup()
end
},
-- Поддержка русского языка в командном режиме
{ 'powerman/vim-plugin-ruscmd' },
-- Подсветка комбинаций клавиш
{ "folke/which-key.nvim",
config = function()
-- Временно отключен
-- Плохо выглядит с pywal base16-gruvbox-hard
-- require('which-key').setup()
end
},
}, {
defaults = {
lazy = false
}
})

6
.config/picom/picom.conf Normal file
View File

@@ -0,0 +1,6 @@
backend = "glx";
corner-radius = 10;
fading = true;
fade-delta = 8;

View File

@@ -0,0 +1,95 @@
[colors]
background = ${xrdb:color0:#222}
foreground = ${xrdb:color7:#222}
primary = ${xrdb:color2:#222}
secondary = ${xrdb:color5:#222}
alert = ${xrdb:color1:#222}
disabled = ${xrdb:color4:#222}
[bar/top_bar]
width = 100%
height = 20px
radius = 5
background = ${colors.background}
foreground = ${colors.foreground}
line-size = 5pt
border-size = 5px
border-color = #00000000
padding-left = 1
padding-right = 1
module-margin = 1
font-0 = CodeNewRoman Nerd Font Mono:pixelsize=10;3
modules-left = xworkspaces
modules-right = pulseaudio xkeyboard date systray
cursor-click = pointer
cursor-scroll = ns-resize
enable-ipc = true
wm-restack = bspwm
[module/xworkspaces]
type = internal/xworkspaces
label-active =
label-active-foreground = ${colors.primary}
label-active-background = ${colors.background}
; label-active-underline = ${colors.primary}
label-active-padding = 1
label-occupied =
label-occupied-foreground = ${colors.secondary}
label-occupied-padding = 1
label-urgent =
label-urgent-foreground = ${colors.alert}
label-urgent-padding = 1
label-empty =
label-empty-foreground = ${colors.foreground}
label-empty-padding = 1
[module/pulseaudio]
type = internal/pulseaudio
format-volume = 󰕿 <label-volume>
label-muted = 󰕿 0%
label-muted-foreground = ${colors.disabled}
interval = 1
use-ui-max = false
click-right = /bin/bash -c "pactl set-sink-mute @DEFAULT_SINK@ toggle"
[module/xkeyboard]
type = internal/xkeyboard
label-layout = %layout%
label-layout-foreground = ${colors.foreground}
[module/date]
type = internal/date
interval = 1
date = %H:%M
date-alt = %Y-%m-%d %H:%M:%S
label = %date%
label-foreground = ${colors.primary}
[module/systray]
type = internal/tray
format-margin = 0pt
tray-spacing = 2pt
[settings]
screenchange-reload = true
pseudo-transparency = true
; vim:ft=dosini

View File

@@ -0,0 +1,10 @@
# If a config.py file exists, this file is ignored unless it's explicitly loaded
# via config.load_autoconfig(). For more information, see:
# https://github.com/qutebrowser/qutebrowser/blob/main/doc/help/configuring.asciidoc#loading-autoconfigyml
# DO NOT edit this file by hand, qutebrowser will overwrite it.
# Instead, create a config.py - see :help for details.
config_version: 2
settings:
colors.webpage.darkmode.enabled:
global: false

View File

View File

@@ -0,0 +1,3 @@
config.load_autoconfig()
config.set("colors.webpage.darkmode.enabled", True)
config.source('qutewal.py')

View File

View File

@@ -0,0 +1,325 @@
import json
import os
home = os.getenv('HOME')
colors_relative = '.cache/wal/colors.json'
colors_absolute = os.path.join(home, colors_relative)
if os.path.isfile(colors_absolute):
with open(colors_absolute) as colorfile:
colors = json.load(colorfile)
## Background color of the completion widget category headers.
## Type: QssColor
c.colors.completion.category.bg = colors['special']['background']
## Bottom border color of the completion widget category headers.
## Type: QssColor
c.colors.completion.category.border.bottom = colors['special']['background']
## Top border color of the completion widget category headers.
## Type: QssColor
c.colors.completion.category.border.top = colors['special']['background']
## Foreground color of completion widget category headers.
## Type: QtColor
c.colors.completion.category.fg = colors['special']['foreground']
## Background color of the completion widget for even rows.
## Type: QssColor
c.colors.completion.even.bg = colors['special']['background']
## Background color of the completion widget for odd rows.
## Type: QssColor
c.colors.completion.odd.bg = colors['special']['background']
## Text color of the completion widget.
## Type: QtColor
c.colors.completion.fg = colors['special']['foreground']
## Background color of the selected completion item.
## Type: QssColor
c.colors.completion.item.selected.bg = colors['colors']['color5']
## Bottom border color of the selected completion item.
## Type: QssColor
c.colors.completion.item.selected.border.bottom = colors['special'][
'background']
## Top border color of the completion widget category headers.
## Type: QssColor
c.colors.completion.item.selected.border.top = colors['special']['background']
## Foreground color of the selected completion item.
## Type: QtColor
c.colors.completion.item.selected.fg = colors['special']['foreground']
## Foreground color of the matched text in the completion.
## Type: QssColor
c.colors.completion.match.fg = colors['colors']['color3']
## Color of the scrollbar in completion view
## Type: QssColor
c.colors.completion.scrollbar.bg = colors['special']['background']
## Color of the scrollbar handle in completion view.
## Type: QssColor
c.colors.completion.scrollbar.fg = colors['special']['foreground']
## Background color for the download bar.
## Type: QssColor
c.colors.downloads.bar.bg = colors['special']['background']
## Background color for downloads with errors.
## Type: QtColor
c.colors.downloads.error.bg = colors['colors']['color5']
## Foreground color for downloads with errors.
## Type: QtColor
c.colors.downloads.error.fg = colors['special']['foreground']
## Color gradient stop for download backgrounds.
## Type: QtColor
c.colors.downloads.stop.bg = colors['colors']['color6']
## Color gradient interpolation system for download backgrounds.
## Type: ColorSystem
## Valid values:
## - rgb: Interpolate in the RGB color system.
## - hsv: Interpolate in the HSV color system.
## - hsl: Interpolate in the HSL color system.
## - none: Don't show a gradient.
c.colors.downloads.system.bg = 'none'
## Background color for hints. Note that you can use a `rgba(...)` value
## for transparency.
## Type: QssColor
c.colors.hints.bg = colors['colors']['color3']
## Font color for hints.
## Type: QssColor
c.colors.hints.fg = colors['special']['background']
## Font color for the matched part of hints.
## Type: QssColor
c.colors.hints.match.fg = colors['colors']['color4']
## Background color of the keyhint widget.
## Type: QssColor
c.colors.keyhint.bg = colors['special']['background']
## Text color for the keyhint widget.
## Type: QssColor
c.colors.keyhint.fg = colors['special']['foreground']
## Highlight color for keys to complete the current keychain.
## Type: QssColor
c.colors.keyhint.suffix.fg = colors['colors']['color3']
## Background color of an error message.
## Type: QssColor
c.colors.messages.error.bg = colors['colors']['color5']
## Border color of an error message.
## Type: QssColor
c.colors.messages.error.border = colors['colors']['color5']
## Foreground color of an error message.
## Type: QssColor
c.colors.messages.error.fg = colors['special']['foreground']
## Background color of an info message.
## Type: QssColor
c.colors.messages.info.bg = colors['colors']['color4']
## Border color of an info message.
## Type: QssColor
c.colors.messages.info.border = colors['colors']['color4']
## Foreground color an info message.
## Type: QssColor
c.colors.messages.info.fg = colors['special']['foreground']
## Background color of a warning message.
## Type: QssColor
c.colors.messages.warning.bg = colors['colors']['color1']
## Border color of a warning message.
## Type: QssColor
c.colors.messages.warning.border = colors['colors']['color1']
## Foreground color a warning message.
## Type: QssColor
c.colors.messages.warning.fg = colors['special']['foreground']
## Background color for prompts.
## Type: QssColor
c.colors.prompts.bg = colors['special']['background']
# ## Border used around UI elements in prompts.
# ## Type: String
c.colors.prompts.border = '1px solid ' + colors['special']['background']
## Foreground color for prompts.
## Type: QssColor
c.colors.prompts.fg = colors['special']['foreground']
## Background color for the selected item in filename prompts.
## Type: QssColor
c.colors.prompts.selected.bg = colors['colors']['color5']
## Background color of the statusbar in caret mode.
## Type: QssColor
c.colors.statusbar.caret.bg = colors['colors']['color6']
## Foreground color of the statusbar in caret mode.
## Type: QssColor
c.colors.statusbar.caret.fg = colors['special']['cursor']
## Background color of the statusbar in caret mode with a selection.
## Type: QssColor
c.colors.statusbar.caret.selection.bg = colors['colors']['color6']
## Foreground color of the statusbar in caret mode with a selection.
## Type: QssColor
c.colors.statusbar.caret.selection.fg = colors['special']['foreground']
## Background color of the statusbar in command mode.
## Type: QssColor
c.colors.statusbar.command.bg = colors['special']['background']
## Foreground color of the statusbar in command mode.
## Type: QssColor
c.colors.statusbar.command.fg = colors['special']['foreground']
## Background color of the statusbar in private browsing + command mode.
## Type: QssColor
c.colors.statusbar.command.private.bg = colors['special']['background']
## Foreground color of the statusbar in private browsing + command mode.
## Type: QssColor
c.colors.statusbar.command.private.fg = colors['special']['foreground']
## Background color of the statusbar in insert mode.
## Type: QssColor
c.colors.statusbar.insert.bg = colors['colors']['color2']
## Foreground color of the statusbar in insert mode.
## Type: QssColor
c.colors.statusbar.insert.fg = colors['special']['background']
## Background color of the statusbar.
## Type: QssColor
c.colors.statusbar.normal.bg = colors['special']['background']
## Foreground color of the statusbar.
## Type: QssColor
c.colors.statusbar.normal.fg = colors['special']['foreground']
## Background color of the statusbar in passthrough mode.
## Type: QssColor
c.colors.statusbar.passthrough.bg = colors['colors']['color4']
## Foreground color of the statusbar in passthrough mode.
## Type: QssColor
c.colors.statusbar.passthrough.fg = colors['special']['foreground']
## Background color of the statusbar in private browsing mode.
## Type: QssColor
c.colors.statusbar.private.bg = colors['special']['background']
## Foreground color of the statusbar in private browsing mode.
## Type: QssColor
c.colors.statusbar.private.fg = colors['special']['foreground']
## Background color of the progress bar.
## Type: QssColor
c.colors.statusbar.progress.bg = colors['special']['foreground']
## Foreground color of the URL in the statusbar on error.
## Type: QssColor
c.colors.statusbar.url.error.fg = colors['colors']['color5']
## Default foreground color of the URL in the statusbar.
## Type: QssColor
c.colors.statusbar.url.fg = colors['special']['foreground']
## Foreground color of the URL in the statusbar for hovered links.
## Type: QssColor
c.colors.statusbar.url.hover.fg = colors['colors']['color4']
## Foreground color of the URL in the statusbar on successful load
## (http).
## Type: QssColor
c.colors.statusbar.url.success.http.fg = colors['special']['foreground']
## Foreground color of the URL in the statusbar on successful load
## (https).
## Type: QssColor
c.colors.statusbar.url.success.https.fg = colors['colors']['color2']
## Foreground color of the URL in the statusbar when there's a warning.
## Type: QssColor
c.colors.statusbar.url.warn.fg = colors['colors']['color1']
## Background color of the tab bar.
## Type: QtColor
c.colors.tabs.bar.bg = colors['special']['background']
## Background color of unselected even tabs.
## Type: QtColor
c.colors.tabs.even.bg = colors['special']['background']
## Foreground color of unselected even tabs.
## Type: QtColor
c.colors.tabs.even.fg = colors['special']['foreground']
## Color for the tab indicator on errors.
## Type: QtColor
c.colors.tabs.indicator.error = colors['colors']['color5']
## Color gradient start for the tab indicator.
## Type: QtColor
# c.colors.tabs.indicator.start = colors['colors']['color5']
## Color gradient end for the tab indicator.
## Type: QtColor
# c.colors.tabs.indicator.stop = colors['colors']['color1']
## Color gradient interpolation system for the tab indicator.
## Type: ColorSystem
## Valid values:
## - rgb: Interpolate in the RGB color system.
## - hsv: Interpolate in the HSV color system.
## - hsl: Interpolate in the HSL color system.
## - none: Don't show a gradient.
c.colors.tabs.indicator.system = 'none'
## Background color of unselected odd tabs.
## Type: QtColor
c.colors.tabs.odd.bg = colors['special']['background']
## Foreground color of unselected odd tabs.
## Type: QtColor
c.colors.tabs.odd.fg = colors['special']['foreground']
# ## Background color of selected even tabs.
# ## Type: QtColor
c.colors.tabs.selected.even.bg = colors['colors']['color4']
# ## Foreground color of selected even tabs.
# ## Type: QtColor
c.colors.tabs.selected.even.fg = colors['special']['foreground']
# ## Background color of selected odd tabs.
# ## Type: QtColor
c.colors.tabs.selected.odd.bg = colors['colors']['color4']
# ## Foreground color of selected odd tabs.
# ## Type: QtColor
c.colors.tabs.selected.odd.fg = colors['special']['foreground']
## Background color for webpages if unset (or empty to use the theme's
## color)
## Type: QtColor
c.colors.webpage.bg = colors['special']['background']

121
.config/sxhkd/sxhkdrc Normal file
View File

@@ -0,0 +1,121 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
st
# program launcher
super + @space
dmenu_run
# make sxhkd reload its configuration files:
super + Escape
pkill -USR1 -x sxhkd
#
# bspwm hotkeys
#
# quit/restart bspwm
super + alt + {q,r}
bspc {quit,wm -r}
# close and kill
super + {_,shift + }w
bspc node -{c,k}
# alternate between the tiled and monocle layout
super + m
bspc desktop -l next
# send the newest marked node to the newest preselected node
super + y
bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest window
super + g
bspc node -s biggest.window
#
# state/flags
#
# set the window state
super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# set the node flags
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
#
# focus/swap
#
# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# focus the node for the given path jump
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
# focus the next/previous window in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
# focus the next/previous desktop in the current monitor
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# focus the last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
# focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
# focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#
# preselect
#
# preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
# cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}

20
.gitignore vendored Normal file
View File

@@ -0,0 +1,20 @@
/.*
/Code/*
/Downloads/*
!/Downloads/Telegram Desktop
/Downloads/Telegram Desktop/*
/Sync/*
/Data/*
/Mount/*
/Documents/*
!*.gitkeep
!.config
!.scripts
!.xinitrc
!.bashrc
!.gitignore

3
.scripts/dpass.sh Executable file
View File

@@ -0,0 +1,3 @@
#! /bin/bash
dmenu -p "$1" <&-

16
.xinitrc Normal file
View File

@@ -0,0 +1,16 @@
setxkbmap -option grp:ctrl_shift_toggle us,ru
libinput-gestures &
wal --theme base16-gruvbox-hard
polybar -r &
picom &
pactl -- set-sink-volume 0 25%
numen ~/.config/numen/phrases.phrases --phraselog=phrases.txt &
exec sxhkd -c ~/.config/sxhkd/sxhkdrc &
exec bspwm

0
Code/.gitkeep Normal file
View File

0
Data/.gitkeep Normal file
View File

0
Documents/.gitkeep Normal file
View File

0
Downloads/.gitkeep Normal file
View File

View File

0
Sync/.gitkeep Normal file
View File