Compare commits
18 Commits
5a64840389
...
c785d3927c
Author | SHA1 | Date | |
---|---|---|---|
c785d3927c | |||
cbf8c1cd3d | |||
b9f9311e8c | |||
3d6a0c7d06 | |||
c4505f031d | |||
1e8a99ff6d | |||
5e95c6fedd | |||
e4ee8729de | |||
fef317a18a | |||
e44c73f1c7 | |||
db53671f68 | |||
104fd83815 | |||
39b6738c66 | |||
ebc3249391 | |||
375a316ac1 | |||
c858ebbce3 | |||
70482d0f1a | |||
591bfb2939 |
3
.gitignore
vendored
3
.gitignore
vendored
@ -1,8 +1,11 @@
|
|||||||
bspwm/.config/bspwm/themes/theme.sh
|
bspwm/.config/bspwm/themes/theme.sh
|
||||||
shell/.config/zsh/plugins/zsh-autosuggestions
|
shell/.config/zsh/plugins/zsh-autosuggestions
|
||||||
shell/.config/zsh/plugins/zsh-syntax-highlighting
|
shell/.config/zsh/plugins/zsh-syntax-highlighting
|
||||||
|
shell/.config/zsh/plugins/zsh-vi-mode
|
||||||
qtile/.config/qtile/theme.txt
|
qtile/.config/qtile/theme.txt
|
||||||
lupan-clock/lupan-clock
|
lupan-clock/lupan-clock
|
||||||
lupan-wm/target
|
lupan-wm/target
|
||||||
*~
|
*~
|
||||||
__pycache__
|
__pycache__
|
||||||
|
/dwm
|
||||||
|
/st
|
||||||
|
45
Makefile
Normal file
45
Makefile
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
all:
|
||||||
|
@echo "run: make clone build install"
|
||||||
|
|
||||||
|
clone: ~/.local/share/zap dwm st
|
||||||
|
|
||||||
|
build: build-dwm build-st build-lupan-clock
|
||||||
|
|
||||||
|
install: install-dwm install-st install-lupan-clock install-other
|
||||||
|
|
||||||
|
~/.local/share/zap:
|
||||||
|
mkdir -p ~/.local/share
|
||||||
|
cd ~/.local/share && \
|
||||||
|
git clone https://github.com/zap-zsh/zap.git --branch=release-v1
|
||||||
|
|
||||||
|
dwm:
|
||||||
|
git clone https://git.suckless.org/dwm
|
||||||
|
cp -i patches/dwm/config.h dwm/
|
||||||
|
|
||||||
|
build-dwm:
|
||||||
|
make -C dwm
|
||||||
|
|
||||||
|
install-dwm:
|
||||||
|
make -C dwm install PREFIX="${HOME}/.local"
|
||||||
|
|
||||||
|
st:
|
||||||
|
git clone https://git.suckless.org/st
|
||||||
|
cd st && \
|
||||||
|
git remote add lupan.pl https://gitea.lupan.pl/lupan/st.git && \
|
||||||
|
git fetch lupan.pl && \
|
||||||
|
git checkout -b patched --track lupan.pl/patched
|
||||||
|
|
||||||
|
build-st:
|
||||||
|
make -C st
|
||||||
|
|
||||||
|
install-st:
|
||||||
|
make -C st install PREFIX="${HOME}/.local"
|
||||||
|
|
||||||
|
build-lupan-clock:
|
||||||
|
make -C lupan-clock
|
||||||
|
|
||||||
|
install-lupan-clock:
|
||||||
|
make -C lupan-clock install PREFIX="${HOME}/.local"
|
||||||
|
|
||||||
|
install-other:
|
||||||
|
stow -Rv shell tmux xsession nvim
|
40
README.md
40
README.md
@ -1,29 +1,6 @@
|
|||||||
Lupan's config files
|
Lupan's config files
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Screenshots
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Short answer: [screenshots here](https://lupan.pl/lupan-themes/).
|
|
||||||
|
|
||||||
My configuration allows to switch between my 6 themes using a shell
|
|
||||||
script bound to a key stroke (`super + F6` for switching themes in a
|
|
||||||
cycle and `super + shift + F6` for selecting one with `dmenu`). The
|
|
||||||
theme is applied to *bspwm*, *Polybar*, *Alacritty*, *Emacs*, and
|
|
||||||
*Gtk3* (with support for reloading themes in active *Gtk3*
|
|
||||||
applications, but I currently use only two *Gtk3* themes: one dark and
|
|
||||||
one light).
|
|
||||||
|
|
||||||
You can see the screenshots of my whole workspace with each of the
|
|
||||||
themes applied on the page describing [my Emacs
|
|
||||||
themes](https://lupan.pl/lupan-themes/). For the Emacs theme
|
|
||||||
reloading I use simple helper Emacs function `my-select-theme`
|
|
||||||
available from [Toggle between dark and light themes with a
|
|
||||||
key](https://lupan.pl/dotemacs/#toggle-between-dark-and-light-themes-with-a-key)
|
|
||||||
section of my Emacs config (also available in corresponding [GitHub
|
|
||||||
repo](https://github.com/lukpank/.emacs.d).
|
|
||||||
|
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
|
|
||||||
@ -34,21 +11,16 @@ that you have required programs in your `PATH` with
|
|||||||
$ sh check_dependencies.sh
|
$ sh check_dependencies.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
For [qtile](http://www.qtile.org/) configuration run
|
Install font `ttf-firacode-nerd` (https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/FiraCode.zip).
|
||||||
|
|
||||||
|
Install `st`, `dwm`, `lupan-clock`, and config files with
|
||||||
|
|
||||||
```
|
```
|
||||||
$ stow -v alacritty xsession qtile music shell tmux
|
$ make clone build install
|
||||||
```
|
```
|
||||||
|
|
||||||
For [bspwm](https://github.com/baskerville/bspwm) configuration run
|
Change to `zsh` as your login shell with
|
||||||
|
|
||||||
```
|
```
|
||||||
$ stow -v alacritty xsession bspwm music shell tmux
|
$ chsh -s /usr/bin/zsh
|
||||||
```
|
|
||||||
|
|
||||||
but if you want [i3](https://i3wm.org/) config (left as a fallback)
|
|
||||||
instead of *qtile* or *bspwm* then *also* run
|
|
||||||
|
|
||||||
```
|
|
||||||
$ stow -v i3
|
|
||||||
```
|
```
|
||||||
|
@ -1,63 +1,37 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
echo '# qtile:'
|
echo '# required:'
|
||||||
for CMD in \
|
for CMD in \
|
||||||
alacritty \
|
zsh \
|
||||||
qtile \
|
git \
|
||||||
emacsclient \
|
cc \
|
||||||
|
make \
|
||||||
setxkbmap \
|
setxkbmap \
|
||||||
slock \
|
slock \
|
||||||
systemctl \
|
systemctl \
|
||||||
xmodmap \
|
xmodmap \
|
||||||
xrandr \
|
xrandr \
|
||||||
xrdb \
|
xrdb \
|
||||||
|
xset \
|
||||||
xsetroot \
|
xsetroot \
|
||||||
|
hsetroot \
|
||||||
xsettingsd \
|
xsettingsd \
|
||||||
rofi; do
|
sed \
|
||||||
which "$CMD"
|
pkill \
|
||||||
done
|
|
||||||
|
|
||||||
echo -e '\n# bspwm:'
|
|
||||||
for CMD in \
|
|
||||||
alacritty \
|
|
||||||
bspc \
|
|
||||||
bspwm \
|
|
||||||
dmenu \
|
dmenu \
|
||||||
dmenu_run \
|
dmenu_run \
|
||||||
emacsclient \
|
xss-lock \
|
||||||
pkill \
|
exa \
|
||||||
polybar \
|
fzf \
|
||||||
polybar-msg \
|
; do
|
||||||
sed \
|
|
||||||
setxkbmap \
|
|
||||||
slock \
|
|
||||||
sxhkd \
|
|
||||||
systemctl \
|
|
||||||
xargs \
|
|
||||||
xdo \
|
|
||||||
xmodmap \
|
|
||||||
xrandr \
|
|
||||||
xrdb \
|
|
||||||
xsetroot \
|
|
||||||
xsettingsd \
|
|
||||||
xtitle \
|
|
||||||
xss-lock; do
|
|
||||||
which "$CMD"
|
which "$CMD"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -e '\n# bspwm (optional):'
|
echo -e '\n# optional:'
|
||||||
for CMD in \
|
for CMD in \
|
||||||
firefox \
|
|
||||||
mpc \
|
|
||||||
mpd \
|
|
||||||
pamixer \
|
|
||||||
sx \
|
sx \
|
||||||
thunderbird \
|
picom \
|
||||||
|
compton \
|
||||||
xbacklight; do
|
xbacklight; do
|
||||||
which "$CMD"
|
which "$CMD"
|
||||||
done
|
done
|
||||||
|
|
||||||
echo -e '\n# shell:'
|
|
||||||
for CMD in emacsclient zsh; do
|
|
||||||
which "$CMD"
|
|
||||||
done
|
|
||||||
|
@ -1,2 +1,8 @@
|
|||||||
|
PREFIX = /usr/local
|
||||||
|
|
||||||
lupan-clock: lupan-clock.c
|
lupan-clock: lupan-clock.c
|
||||||
${CC} -o $@ $< -lX11 -Wall
|
${CC} -o $@ $< -lX11 -Wall
|
||||||
|
|
||||||
|
install:
|
||||||
|
mkdir -p ${DESTDIR}${PREFIX}/bin
|
||||||
|
cp -f lupan-clock ${DESTDIR}${PREFIX}/bin
|
||||||
|
518
nvim/.config/nvim/init.lua
Normal file
518
nvim/.config/nvim/init.lua
Normal file
@ -0,0 +1,518 @@
|
|||||||
|
-- Set <space> as the leader key (must be before plugins)
|
||||||
|
-- See `:help mapleader`
|
||||||
|
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
|
-- Disable netrw: suggested for neovim-tree
|
||||||
|
vim.g.loaded_netrw = 1
|
||||||
|
vim.g.loaded_netrwPlugin = 1
|
||||||
|
|
||||||
|
-- Install package manager (`:help lazy.nvim.txt`)
|
||||||
|
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)
|
||||||
|
|
||||||
|
-- Install and configure packages
|
||||||
|
require('lazy').setup({
|
||||||
|
-- Git related plugins
|
||||||
|
'tpope/vim-fugitive',
|
||||||
|
'tpope/vim-rhubarb',
|
||||||
|
|
||||||
|
-- Detect tabstop and shiftwidth automatically
|
||||||
|
'tpope/vim-sleuth',
|
||||||
|
|
||||||
|
{
|
||||||
|
-- LSP Configuration & Plugins
|
||||||
|
'neovim/nvim-lspconfig',
|
||||||
|
dependencies = {
|
||||||
|
-- Automatically install LSPs to stdpath for neovim
|
||||||
|
{ 'williamboman/mason.nvim', config = true },
|
||||||
|
'williamboman/mason-lspconfig.nvim',
|
||||||
|
|
||||||
|
-- Useful status updates for LSP
|
||||||
|
{ 'j-hui/fidget.nvim', tag = 'legacy', opts = {} },
|
||||||
|
|
||||||
|
-- Additional lua configuration, makes nvim stuff amazing!
|
||||||
|
'folke/neodev.nvim',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
-- Autocompletion
|
||||||
|
'hrsh7th/nvim-cmp',
|
||||||
|
dependencies = {
|
||||||
|
-- Snippet Engine & its associated nvim-cmp source
|
||||||
|
'L3MON4D3/LuaSnip',
|
||||||
|
'saadparwaiz1/cmp_luasnip',
|
||||||
|
|
||||||
|
-- Adds LSP completion capabilities
|
||||||
|
'hrsh7th/cmp-nvim-lsp',
|
||||||
|
|
||||||
|
-- Adds a number of user-friendly snippets
|
||||||
|
'rafamadriz/friendly-snippets',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Useful plugin to show you pending keybinds.
|
||||||
|
{ 'folke/which-key.nvim', opts = {} },
|
||||||
|
{
|
||||||
|
-- Adds git releated signs to the gutter, as well as utilities for managing changes
|
||||||
|
'lewis6991/gitsigns.nvim',
|
||||||
|
opts = {
|
||||||
|
-- See `:help gitsigns.txt`
|
||||||
|
signs = {
|
||||||
|
add = { text = '+' },
|
||||||
|
change = { text = '~' },
|
||||||
|
delete = { text = '_' },
|
||||||
|
topdelete = { text = '‾' },
|
||||||
|
changedelete = { text = '~' },
|
||||||
|
},
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
vim.keymap.set('n', '<leader>gp', require('gitsigns').prev_hunk,
|
||||||
|
{ buffer = bufnr, desc = '[G]o to [P]revious Hunk' })
|
||||||
|
vim.keymap.set('n', '<leader>gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' })
|
||||||
|
vim.keymap.set('n', '<leader>ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' })
|
||||||
|
vim.keymap.set('n', '<leader>sh', require('gitsigns').stage_hunk, { buffer = bufnr, desc = '[S]tage [H]unk' })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/tokyonight.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
config = function()
|
||||||
|
vim.cmd.colorscheme 'tokyonight'
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
-- Set lualine as statusline
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
-- See `:help lualine.txt`
|
||||||
|
opts = {
|
||||||
|
options = {
|
||||||
|
icons_enabled = false,
|
||||||
|
theme = 'tokyonight',
|
||||||
|
component_separators = '|',
|
||||||
|
section_separators = '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
-- Add indentation guides even on blank lines
|
||||||
|
'lukas-reineke/indent-blankline.nvim',
|
||||||
|
-- Enable `lukas-reineke/indent-blankline.nvim`
|
||||||
|
-- See `:help indent_blankline.txt`
|
||||||
|
opts = {
|
||||||
|
char = '┊',
|
||||||
|
show_trailing_blankline_indent = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- "gc" to comment visual regions/lines
|
||||||
|
{ 'numToStr/Comment.nvim', opts = {} },
|
||||||
|
|
||||||
|
-- Fuzzy Finder (files, lsp, etc)
|
||||||
|
{ 'nvim-telescope/telescope.nvim', branch = '0.1.x', dependencies = { 'nvim-lua/plenary.nvim' } },
|
||||||
|
|
||||||
|
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
||||||
|
-- Only load if `make` is available. Make sure you have the system
|
||||||
|
-- requirements installed.
|
||||||
|
{
|
||||||
|
'nvim-telescope/telescope-fzf-native.nvim',
|
||||||
|
-- NOTE: If you are having trouble with this installation,
|
||||||
|
-- refer to the README for telescope-fzf-native for more instructions.
|
||||||
|
build = 'make',
|
||||||
|
cond = function()
|
||||||
|
return vim.fn.executable 'make' == 1
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
-- Highlight, edit, and navigate code
|
||||||
|
'nvim-treesitter/nvim-treesitter',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||||
|
},
|
||||||
|
build = ':TSUpdate',
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-tree/nvim-tree.lua',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-tree/nvim-web-devicons'
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
hijack_cursor = true,
|
||||||
|
view = {
|
||||||
|
width = 40,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
'nvim-orgmode/orgmode',
|
||||||
|
|
||||||
|
'norcalli/nvim-colorizer.lua',
|
||||||
|
|
||||||
|
{
|
||||||
|
"kylechui/nvim-surround",
|
||||||
|
version = "*", -- Use for stability; omit to use `main` branch for the latest features
|
||||||
|
event = "VeryLazy",
|
||||||
|
config = function()
|
||||||
|
require("nvim-surround").setup({
|
||||||
|
-- Configuration here, or leave empty to use defaults
|
||||||
|
})
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'akinsho/toggleterm.nvim',
|
||||||
|
version = "*",
|
||||||
|
opts = {
|
||||||
|
direction = "float",
|
||||||
|
open_mapping = [[<C-\>]],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-- See: https://github.com/folke/lazy.nvim#-structuring-your-plugins
|
||||||
|
-- { import = 'custom.plugins' },
|
||||||
|
}, {})
|
||||||
|
|
||||||
|
-- [[ Org mode ]]
|
||||||
|
|
||||||
|
local org = require('orgmode')
|
||||||
|
org.setup_ts_grammar()
|
||||||
|
|
||||||
|
require('nvim-treesitter.configs').setup {
|
||||||
|
-- If TS highlights are not enabled at all, or disabled via `disable` prop,
|
||||||
|
-- highlighting will fallback to default Vim syntax highlighting
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
-- Required for spellcheck, some LaTex highlights and
|
||||||
|
-- code block highlights that do not have ts grammar
|
||||||
|
additional_vim_regex_highlighting = { 'org' },
|
||||||
|
},
|
||||||
|
ensure_installed = { 'org' }, -- Or run :TSUpdate org
|
||||||
|
}
|
||||||
|
|
||||||
|
org.setup({
|
||||||
|
org_agenda_files = { '~/org/*.org' },
|
||||||
|
org_default_notes_file = '~/org/capture.org',
|
||||||
|
})
|
||||||
|
|
||||||
|
-- [[ Setting options ]]
|
||||||
|
-- See `:help vim.o`
|
||||||
|
|
||||||
|
-- Set highlight on search
|
||||||
|
vim.o.hlsearch = false
|
||||||
|
|
||||||
|
-- Make line numbers default
|
||||||
|
vim.wo.number = true
|
||||||
|
|
||||||
|
-- Enable mouse mode
|
||||||
|
vim.o.mouse = 'a'
|
||||||
|
|
||||||
|
-- Sync clipboard between OS and Neovim.
|
||||||
|
-- Remove this option if you want your OS clipboard to remain independent.
|
||||||
|
-- See `:help 'clipboard'`
|
||||||
|
vim.o.clipboard = 'unnamedplus'
|
||||||
|
|
||||||
|
-- Enable break indent
|
||||||
|
vim.o.breakindent = true
|
||||||
|
|
||||||
|
-- Save undo history
|
||||||
|
vim.o.undofile = true
|
||||||
|
|
||||||
|
-- Case-insensitive searching UNLESS \C or capital in search
|
||||||
|
vim.o.ignorecase = true
|
||||||
|
vim.o.smartcase = true
|
||||||
|
|
||||||
|
-- Keep signcolumn on by default
|
||||||
|
vim.wo.signcolumn = 'yes'
|
||||||
|
|
||||||
|
-- Decrease update time
|
||||||
|
vim.o.updatetime = 250
|
||||||
|
vim.o.timeoutlen = 300
|
||||||
|
|
||||||
|
-- Set completeopt to have a better completion experience
|
||||||
|
vim.o.completeopt = 'menuone,noselect'
|
||||||
|
|
||||||
|
-- NOTE: You should make sure your terminal supports this
|
||||||
|
vim.o.termguicolors = true
|
||||||
|
|
||||||
|
-- [[ Basic Keymaps ]]
|
||||||
|
|
||||||
|
-- Keymaps for better default experience
|
||||||
|
-- See `:help vim.keymap.set()`
|
||||||
|
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
||||||
|
|
||||||
|
-- Remap for dealing with word wrap
|
||||||
|
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||||
|
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>tt", ":NvimTreeToggle<cr>", { desc = "[T]oggle Nvim [T]ree" })
|
||||||
|
vim.keymap.set("n", "<leader>ct", ":ColorizerToggle<cr>", { desc = "[C]olorizer [T]oggle" })
|
||||||
|
|
||||||
|
-- [[ Highlight on yank ]]
|
||||||
|
-- See `:help vim.highlight.on_yank()`
|
||||||
|
local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true })
|
||||||
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
|
callback = function()
|
||||||
|
vim.highlight.on_yank()
|
||||||
|
end,
|
||||||
|
group = highlight_group,
|
||||||
|
pattern = '*',
|
||||||
|
})
|
||||||
|
|
||||||
|
-- [[ Configure Telescope ]]
|
||||||
|
-- See `:help telescope` and `:help telescope.setup()`
|
||||||
|
require('telescope').setup {
|
||||||
|
defaults = {
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
['<C-u>'] = false,
|
||||||
|
['<C-d>'] = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Enable telescope fzf native, if installed
|
||||||
|
pcall(require('telescope').load_extension, 'fzf')
|
||||||
|
|
||||||
|
-- See `:help telescope.builtin`
|
||||||
|
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
|
||||||
|
vim.keymap.set('n', '<leader><space>', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' })
|
||||||
|
vim.keymap.set('n', '<leader>/', function()
|
||||||
|
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||||
|
require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
|
||||||
|
winblend = 10,
|
||||||
|
previewer = false,
|
||||||
|
})
|
||||||
|
end, { desc = '[/] Fuzzily search in current buffer' })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' })
|
||||||
|
vim.keymap.set('n', '<leader>sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' })
|
||||||
|
vim.keymap.set('n', '<leader>sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' })
|
||||||
|
vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' })
|
||||||
|
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
|
||||||
|
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||||
|
|
||||||
|
-- [[ Configure Treesitter ]]
|
||||||
|
-- See `:help nvim-treesitter`
|
||||||
|
require('nvim-treesitter.configs').setup {
|
||||||
|
-- Add languages to be installed here that you want installed for treesitter
|
||||||
|
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'typescript', 'vimdoc', 'vim' },
|
||||||
|
|
||||||
|
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
|
||||||
|
auto_install = false,
|
||||||
|
|
||||||
|
highlight = { enable = true },
|
||||||
|
indent = { enable = true },
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = '<c-space>',
|
||||||
|
node_incremental = '<c-space>',
|
||||||
|
scope_incremental = '<c-s>',
|
||||||
|
node_decremental = '<M-space>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||||
|
keymaps = {
|
||||||
|
-- You can use the capture groups defined in textobjects.scm
|
||||||
|
['aa'] = '@parameter.outer',
|
||||||
|
['ia'] = '@parameter.inner',
|
||||||
|
['af'] = '@function.outer',
|
||||||
|
['if'] = '@function.inner',
|
||||||
|
['ac'] = '@class.outer',
|
||||||
|
['ic'] = '@class.inner',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
set_jumps = true, -- whether to set jumps in the jumplist
|
||||||
|
goto_next_start = {
|
||||||
|
[']m'] = '@function.outer',
|
||||||
|
[']]'] = '@class.outer',
|
||||||
|
},
|
||||||
|
goto_next_end = {
|
||||||
|
[']M'] = '@function.outer',
|
||||||
|
[']['] = '@class.outer',
|
||||||
|
},
|
||||||
|
goto_previous_start = {
|
||||||
|
['[m'] = '@function.outer',
|
||||||
|
['[['] = '@class.outer',
|
||||||
|
},
|
||||||
|
goto_previous_end = {
|
||||||
|
['[M'] = '@function.outer',
|
||||||
|
['[]'] = '@class.outer',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
swap = {
|
||||||
|
enable = true,
|
||||||
|
swap_next = {
|
||||||
|
['<leader>a'] = '@parameter.inner',
|
||||||
|
},
|
||||||
|
swap_previous = {
|
||||||
|
['<leader>A'] = '@parameter.inner',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Diagnostic keymaps
|
||||||
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
|
||||||
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
|
||||||
|
vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
|
||||||
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
|
||||||
|
|
||||||
|
-- [[ Configure LSP ]]
|
||||||
|
-- This function gets run when an LSP connects to a particular buffer.
|
||||||
|
local on_attach = function(_, bufnr)
|
||||||
|
local nmap = function(keys, func, desc)
|
||||||
|
if desc then
|
||||||
|
desc = 'LSP: ' .. desc
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
|
||||||
|
end
|
||||||
|
|
||||||
|
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
|
||||||
|
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
|
||||||
|
|
||||||
|
nmap('gd', vim.lsp.buf.definition, '[G]oto [D]efinition')
|
||||||
|
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||||
|
nmap('gI', vim.lsp.buf.implementation, '[G]oto [I]mplementation')
|
||||||
|
nmap('<leader>D', vim.lsp.buf.type_definition, 'Type [D]efinition')
|
||||||
|
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
|
||||||
|
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
||||||
|
|
||||||
|
-- See `:help K` for why this keymap
|
||||||
|
nmap('K', vim.lsp.buf.hover, 'Hover Documentation')
|
||||||
|
nmap('<C-k>', vim.lsp.buf.signature_help, 'Signature Documentation')
|
||||||
|
|
||||||
|
-- Lesser used LSP functionality
|
||||||
|
nmap('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
|
||||||
|
nmap('<leader>wa', vim.lsp.buf.add_workspace_folder, '[W]orkspace [A]dd Folder')
|
||||||
|
nmap('<leader>wr', vim.lsp.buf.remove_workspace_folder, '[W]orkspace [R]emove Folder')
|
||||||
|
nmap('<leader>wl', function()
|
||||||
|
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
|
||||||
|
end, '[W]orkspace [L]ist Folders')
|
||||||
|
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||||
|
vim.lsp.buf.format()
|
||||||
|
end, { desc = 'Format current buffer with LSP' })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Enable the following language servers
|
||||||
|
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
|
||||||
|
--
|
||||||
|
-- Add any additional override configuration in the following tables. They will be passed to
|
||||||
|
-- the `settings` field of the server config. You must look up that documentation yourself.
|
||||||
|
local servers = {
|
||||||
|
clangd = {},
|
||||||
|
gopls = {},
|
||||||
|
-- pyright = {},
|
||||||
|
rust_analyzer = {},
|
||||||
|
tsserver = {},
|
||||||
|
|
||||||
|
lua_ls = {
|
||||||
|
Lua = {
|
||||||
|
workspace = { checkThirdParty = false },
|
||||||
|
telemetry = { enable = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Setup neovim lua configuration
|
||||||
|
require('neodev').setup()
|
||||||
|
|
||||||
|
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||||
|
|
||||||
|
-- Ensure the servers above are installed
|
||||||
|
local mason_lspconfig = require 'mason-lspconfig'
|
||||||
|
|
||||||
|
mason_lspconfig.setup {
|
||||||
|
ensure_installed = vim.tbl_keys(servers),
|
||||||
|
}
|
||||||
|
|
||||||
|
mason_lspconfig.setup_handlers {
|
||||||
|
function(server_name)
|
||||||
|
require('lspconfig')[server_name].setup {
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = servers[server_name],
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- [[ Configure nvim-cmp ]]
|
||||||
|
-- See `:help cmp`
|
||||||
|
local cmp = require 'cmp'
|
||||||
|
local luasnip = require 'luasnip'
|
||||||
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
|
luasnip.config.setup {}
|
||||||
|
|
||||||
|
cmp.setup {
|
||||||
|
snippet = {
|
||||||
|
expand = function(args)
|
||||||
|
luasnip.lsp_expand(args.body)
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
mapping = cmp.mapping.preset.insert {
|
||||||
|
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||||
|
['<C-p>'] = cmp.mapping.select_prev_item(),
|
||||||
|
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
||||||
|
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||||
|
['<C-Space>'] = cmp.mapping.complete {},
|
||||||
|
['<CR>'] = cmp.mapping.confirm {
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = true,
|
||||||
|
},
|
||||||
|
['<Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_locally_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
['<S-Tab>'] = cmp.mapping(function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.locally_jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { 'i', 's' }),
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
{ name = 'nvim_lsp' },
|
||||||
|
{ name = 'luasnip' },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
vim.cmd('autocmd BufWritePre *.go :Format')
|
||||||
|
|
||||||
|
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||||
|
-- vim: ts=2 sts=2 sw=2 et
|
121
patches/dwm/config.h
Normal file
121
patches/dwm/config.h
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
/* See LICENSE file for copyright and license details. */
|
||||||
|
|
||||||
|
/* appearance */
|
||||||
|
static const unsigned int borderpx = 2; /* border pixel of windows */
|
||||||
|
static const unsigned int snap = 32; /* snap pixel */
|
||||||
|
static const int showbar = 1; /* 0 means no bar */
|
||||||
|
static const int topbar = 1; /* 0 means bottom bar */
|
||||||
|
static const char *fonts[] = { "FiraCode Nerd Font Ret:size=10" };
|
||||||
|
static const char dmenufont[] = "FiraCode Nerd Font Ret:size=10";
|
||||||
|
static const char col_gray1[] = "#222222";
|
||||||
|
static const char col_gray2[] = "#444444";
|
||||||
|
static const char col_gray3[] = "#bbbbbb";
|
||||||
|
static const char col_gray4[] = "#eeeeee";
|
||||||
|
static const char col_blue[] = "#414868";
|
||||||
|
static const char col_cyan[] = "#7dcfff";
|
||||||
|
static const char *colors[][3] = {
|
||||||
|
/* fg bg border */
|
||||||
|
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
|
||||||
|
[SchemeSel] = { col_gray4, col_blue, col_cyan },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* tagging */
|
||||||
|
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
|
||||||
|
|
||||||
|
static const Rule rules[] = {
|
||||||
|
/* xprop(1):
|
||||||
|
* WM_CLASS(STRING) = instance, class
|
||||||
|
* WM_NAME(STRING) = title
|
||||||
|
*/
|
||||||
|
/* class instance title tags mask isfloating monitor */
|
||||||
|
{ "Gimp", NULL, NULL, 0, 1, -1 },
|
||||||
|
{ "Firefox", NULL, NULL, 1 << 8, 0, -1 },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* layout(s) */
|
||||||
|
static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
|
||||||
|
static const int nmaster = 1; /* number of clients in master area */
|
||||||
|
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
|
||||||
|
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
|
||||||
|
|
||||||
|
static const Layout layouts[] = {
|
||||||
|
/* symbol arrange function */
|
||||||
|
{ "[]=", tile }, /* first entry is default */
|
||||||
|
{ "><>", NULL }, /* no layout function means floating behavior */
|
||||||
|
{ "[M]", monocle },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* key definitions */
|
||||||
|
#define MODKEY Mod1Mask
|
||||||
|
#define TAGKEYS(KEY,TAG) \
|
||||||
|
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
|
||||||
|
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
|
||||||
|
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
|
||||||
|
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
|
||||||
|
|
||||||
|
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
|
||||||
|
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
|
||||||
|
|
||||||
|
/* commands */
|
||||||
|
static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */
|
||||||
|
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_blue, "-sf", col_gray4, NULL };
|
||||||
|
static const char *termcmd[] = { "st", NULL };
|
||||||
|
static const char *lockcmd[] = { "slock", NULL };
|
||||||
|
static const char *suspendcmd[] = { "systemctl", "suspend", NULL };
|
||||||
|
|
||||||
|
static const Key keys[] = {
|
||||||
|
/* modifier key function argument */
|
||||||
|
{ MODKEY|ControlMask, XK_p, spawn, {.v = dmenucmd } },
|
||||||
|
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } },
|
||||||
|
{ MODKEY|ControlMask|ShiftMask, XK_l, spawn, {.v = lockcmd } },
|
||||||
|
{ MODKEY|ControlMask|ShiftMask, XK_s, spawn, {.v = suspendcmd } },
|
||||||
|
{ MODKEY|ControlMask, XK_b, togglebar, {0} },
|
||||||
|
{ MODKEY|ControlMask, XK_j, focusstack, {.i = +1 } },
|
||||||
|
{ MODKEY|ControlMask, XK_k, focusstack, {.i = -1 } },
|
||||||
|
{ MODKEY|ControlMask, XK_i, incnmaster, {.i = +1 } },
|
||||||
|
{ MODKEY|ControlMask, XK_d, incnmaster, {.i = -1 } },
|
||||||
|
{ MODKEY|ControlMask, XK_h, setmfact, {.f = -0.05} },
|
||||||
|
{ MODKEY|ControlMask, XK_l, setmfact, {.f = +0.05} },
|
||||||
|
{ MODKEY, XK_Return, zoom, {0} },
|
||||||
|
{ MODKEY, XK_Tab, view, {0} },
|
||||||
|
{ MODKEY|ControlMask|ShiftMask, XK_c, killclient, {0} },
|
||||||
|
{ MODKEY|ControlMask, XK_t, setlayout, {.v = &layouts[0]} },
|
||||||
|
{ MODKEY|ControlMask, XK_f, setlayout, {.v = &layouts[1]} },
|
||||||
|
{ MODKEY|ControlMask, XK_m, setlayout, {.v = &layouts[2]} },
|
||||||
|
{ MODKEY, XK_space, setlayout, {0} },
|
||||||
|
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
|
||||||
|
{ MODKEY, XK_0, view, {.ui = ~0 } },
|
||||||
|
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
|
||||||
|
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
|
||||||
|
{ MODKEY, XK_period, focusmon, {.i = +1 } },
|
||||||
|
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
|
||||||
|
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
|
||||||
|
TAGKEYS( XK_1, 0)
|
||||||
|
TAGKEYS( XK_2, 1)
|
||||||
|
TAGKEYS( XK_3, 2)
|
||||||
|
TAGKEYS( XK_4, 3)
|
||||||
|
TAGKEYS( XK_5, 4)
|
||||||
|
TAGKEYS( XK_6, 5)
|
||||||
|
TAGKEYS( XK_7, 6)
|
||||||
|
TAGKEYS( XK_8, 7)
|
||||||
|
TAGKEYS( XK_9, 8)
|
||||||
|
{ MODKEY|ControlMask|ShiftMask, XK_q, quit, {0} },
|
||||||
|
};
|
||||||
|
|
||||||
|
/* button definitions */
|
||||||
|
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
|
||||||
|
static const Button buttons[] = {
|
||||||
|
/* click event mask button function argument */
|
||||||
|
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
|
||||||
|
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
|
||||||
|
{ ClkWinTitle, 0, Button2, zoom, {0} },
|
||||||
|
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
|
||||||
|
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
|
||||||
|
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
|
||||||
|
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
|
||||||
|
{ ClkTagBar, 0, Button1, view, {0} },
|
||||||
|
{ ClkTagBar, 0, Button3, toggleview, {0} },
|
||||||
|
{ ClkTagBar, MODKEY, Button1, tag, {0} },
|
||||||
|
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
|
||||||
|
};
|
||||||
|
|
@ -1,231 +0,0 @@
|
|||||||
diff --git a/config.def.h b/config.def.h
|
|
||||||
index 91ab8ca..5bbc088 100644
|
|
||||||
--- a/config.def.h
|
|
||||||
+++ b/config.def.h
|
|
||||||
@@ -5,7 +5,7 @@
|
|
||||||
*
|
|
||||||
* font: see http://freedesktop.org/software/fontconfig/fontconfig-user.html
|
|
||||||
*/
|
|
||||||
-static char *font = "Liberation Mono:pixelsize=12:antialias=true:autohint=true";
|
|
||||||
+static char *font = "Iosevka Slab Light:size=12:antialias=true:autohint=true";
|
|
||||||
static int borderpx = 2;
|
|
||||||
|
|
||||||
/*
|
|
||||||
@@ -95,35 +95,61 @@ unsigned int tabspaces = 8;
|
|
||||||
|
|
||||||
/* Terminal colors (16 first used in escape sequence) */
|
|
||||||
static const char *colorname[] = {
|
|
||||||
- /* 8 normal colors */
|
|
||||||
- "black",
|
|
||||||
- "red3",
|
|
||||||
- "green3",
|
|
||||||
- "yellow3",
|
|
||||||
- "blue2",
|
|
||||||
- "magenta3",
|
|
||||||
- "cyan3",
|
|
||||||
- "gray90",
|
|
||||||
-
|
|
||||||
- /* 8 bright colors */
|
|
||||||
- "gray50",
|
|
||||||
- "red",
|
|
||||||
- "green",
|
|
||||||
- "yellow",
|
|
||||||
- "#5c5cff",
|
|
||||||
- "magenta",
|
|
||||||
- "cyan",
|
|
||||||
- "white",
|
|
||||||
+ /* windi dark */
|
|
||||||
+ "#1f1f1f", /* 0: black */
|
|
||||||
+ "#ef4444", /* 1: red */
|
|
||||||
+ "#22c55e", /* 2: green */
|
|
||||||
+ "#eab308", /* 3: yellow */
|
|
||||||
+ "#3b82f6", /* 4: blue */
|
|
||||||
+ "#d946ef", /* 5: magenta */
|
|
||||||
+ "#06b6d4", /* 6: cyan */
|
|
||||||
+ "#f2f2f2", /* 7: white */
|
|
||||||
+ "#737373", /* 8: brblack */
|
|
||||||
+ "#fecaca", /* 9: brred */
|
|
||||||
+ "#bbf7d0", /* 10: brgreen */
|
|
||||||
+ "#fef08a", /* 11: bryellow */
|
|
||||||
+ "#bfdbfe", /* 12: brblue */
|
|
||||||
+ "#f5d0fe", /* 13: brmagenta*/
|
|
||||||
+ "#a5f3fc", /* 14: brcyan */
|
|
||||||
+ "#fafafa", /* 15: brwhite */
|
|
||||||
|
|
||||||
[255] = 0,
|
|
||||||
|
|
||||||
/* more colors can be added after 255 to use with DefaultXX */
|
|
||||||
- "#cccccc",
|
|
||||||
- "#555555",
|
|
||||||
- "gray90", /* default foreground colour */
|
|
||||||
- "black", /* default background colour */
|
|
||||||
+ "white",
|
|
||||||
+ "black",
|
|
||||||
+ "#E7E7E7", /* default foreground colour */
|
|
||||||
+ "#2C444D",
|
|
||||||
};
|
|
||||||
|
|
||||||
+/* Terminal colors for alternate (light) palette */
|
|
||||||
+static const char *altcolorname[] = {
|
|
||||||
+ /* windi light */
|
|
||||||
+ "#1b1b1b", /* 0: black */
|
|
||||||
+ "#b91c1c", /* 1: red */
|
|
||||||
+ "#15803d", /* 2: green */
|
|
||||||
+ "#a16207", /* 3: yellow */
|
|
||||||
+ "#1d4ed8", /* 4: blue */
|
|
||||||
+ "#a21caf", /* 5: magenta*/
|
|
||||||
+ "#0e7490", /* 6: cyan */
|
|
||||||
+ "#e9ecef", /* 7: white */
|
|
||||||
+ "#404040", /* 8: brblack */
|
|
||||||
+ "#ef4444", /* 9: brred */
|
|
||||||
+ "#22c55e", /* 10: brgreen */
|
|
||||||
+ "#eab308", /* 11: bryellow */
|
|
||||||
+ "#3b82f6", /* 12: brblue */
|
|
||||||
+ "#d946ef", /* 13: brmagenta */
|
|
||||||
+ "#06b6d4", /* 14: brcyan */
|
|
||||||
+ "#f2f2f2", /* 15: brwhite */
|
|
||||||
+
|
|
||||||
+ [255] = 0,
|
|
||||||
+
|
|
||||||
+ /* more colors can be added after 255 to use with DefaultXX */
|
|
||||||
+ "#00638a",
|
|
||||||
+ "#f2f2f2",
|
|
||||||
+ "#454545", /* default foreground colour */
|
|
||||||
+ "#f2f2f2",
|
|
||||||
+};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Default colors (colorname index)
|
|
||||||
@@ -201,6 +227,7 @@ static Shortcut shortcuts[] = {
|
|
||||||
{ TERMMOD, XK_Y, selpaste, {.i = 0} },
|
|
||||||
{ ShiftMask, XK_Insert, selpaste, {.i = 0} },
|
|
||||||
{ TERMMOD, XK_Num_Lock, numlock, {.i = 0} },
|
|
||||||
+ { XK_ANY_MOD, XK_F6, swapcolors, {.i = 0} },
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff --git a/st.h b/st.h
|
|
||||||
index 519b9bd..c25b693 100644
|
|
||||||
--- a/st.h
|
|
||||||
+++ b/st.h
|
|
||||||
@@ -122,6 +122,7 @@ extern wchar_t *worddelimiters;
|
|
||||||
extern int allowaltscreen;
|
|
||||||
extern int allowwindowops;
|
|
||||||
extern char *termname;
|
|
||||||
+extern int usealtcolors;
|
|
||||||
extern unsigned int tabspaces;
|
|
||||||
extern unsigned int defaultfg;
|
|
||||||
extern unsigned int defaultbg;
|
|
||||||
diff --git a/x.c b/x.c
|
|
||||||
index 8a16faa..4b569df 100644
|
|
||||||
--- a/x.c
|
|
||||||
+++ b/x.c
|
|
||||||
@@ -55,6 +55,7 @@ static void clipcopy(const Arg *);
|
|
||||||
static void clippaste(const Arg *);
|
|
||||||
static void numlock(const Arg *);
|
|
||||||
static void selpaste(const Arg *);
|
|
||||||
+static void swapcolors(const Arg *);
|
|
||||||
static void zoom(const Arg *);
|
|
||||||
static void zoomabs(const Arg *);
|
|
||||||
static void zoomreset(const Arg *);
|
|
||||||
@@ -254,6 +255,8 @@ static char *opt_title = NULL;
|
|
||||||
|
|
||||||
static int oldbutton = 3; /* button event on startup: 3 = release */
|
|
||||||
|
|
||||||
+int usealtcolors = 0; /* 1 to use alternate palette */
|
|
||||||
+
|
|
||||||
void
|
|
||||||
clipcopy(const Arg *dummy)
|
|
||||||
{
|
|
||||||
@@ -292,6 +295,18 @@ numlock(const Arg *dummy)
|
|
||||||
win.mode ^= MODE_NUMLOCK;
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+swapcolors(const Arg *arg)
|
|
||||||
+{
|
|
||||||
+ int next = (arg->i == 'D') ? 0 : (arg->i == 'L') ? 1 : !usealtcolors;
|
|
||||||
+
|
|
||||||
+ if (next != usealtcolors) {
|
|
||||||
+ usealtcolors = next;
|
|
||||||
+ xloadcols();
|
|
||||||
+ redraw();
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void
|
|
||||||
zoom(const Arg *arg)
|
|
||||||
{
|
|
||||||
@@ -750,6 +765,11 @@ sixd_to_16bit(int x)
|
|
||||||
return x == 0 ? 0 : 0x3737 + 0x2828 * x;
|
|
||||||
}
|
|
||||||
|
|
||||||
+const char* getcolorname(int i)
|
|
||||||
+{
|
|
||||||
+ return (usealtcolors) ? altcolorname[i] : colorname[i];
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int
|
|
||||||
xloadcolor(int i, const char *name, Color *ncolor)
|
|
||||||
{
|
|
||||||
@@ -768,7 +788,7 @@ xloadcolor(int i, const char *name, Color *ncolor)
|
|
||||||
return XftColorAllocValue(xw.dpy, xw.vis,
|
|
||||||
xw.cmap, &color, ncolor);
|
|
||||||
} else
|
|
||||||
- name = colorname[i];
|
|
||||||
+ name = getcolorname(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
return XftColorAllocName(xw.dpy, xw.vis, xw.cmap, name, ncolor);
|
|
||||||
@@ -791,8 +811,8 @@ xloadcols(void)
|
|
||||||
|
|
||||||
for (i = 0; i < dc.collen; i++)
|
|
||||||
if (!xloadcolor(i, NULL, &dc.col[i])) {
|
|
||||||
- if (colorname[i])
|
|
||||||
- die("could not allocate color '%s'\n", colorname[i]);
|
|
||||||
+ if (getcolorname(i))
|
|
||||||
+ die("could not allocate color '%s'\n", getcolorname(i));
|
|
||||||
else
|
|
||||||
die("could not allocate color %d\n", i);
|
|
||||||
}
|
|
||||||
@@ -1184,13 +1204,13 @@ xinit(int cols, int rows)
|
|
||||||
cursor = XCreateFontCursor(xw.dpy, mouseshape);
|
|
||||||
XDefineCursor(xw.dpy, xw.win, cursor);
|
|
||||||
|
|
||||||
- if (XParseColor(xw.dpy, xw.cmap, colorname[mousefg], &xmousefg) == 0) {
|
|
||||||
+ if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousefg), &xmousefg) == 0) {
|
|
||||||
xmousefg.red = 0xffff;
|
|
||||||
xmousefg.green = 0xffff;
|
|
||||||
xmousefg.blue = 0xffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (XParseColor(xw.dpy, xw.cmap, colorname[mousebg], &xmousebg) == 0) {
|
|
||||||
+ if (XParseColor(xw.dpy, xw.cmap, getcolorname(mousebg), &xmousebg) == 0) {
|
|
||||||
xmousebg.red = 0x0000;
|
|
||||||
xmousebg.green = 0x0000;
|
|
||||||
xmousebg.blue = 0x0000;
|
|
||||||
@@ -2008,6 +2028,15 @@ usage(void)
|
|
||||||
" [stty_args ...]\n", argv0, argv0);
|
|
||||||
}
|
|
||||||
|
|
||||||
+void
|
|
||||||
+sig_usr_handler(int num)
|
|
||||||
+{
|
|
||||||
+ Arg a = { .i = (num == 10) ? 'D' : 'L' };
|
|
||||||
+ signal(num, sig_usr_handler);
|
|
||||||
+ swapcolors(&a);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+
|
|
||||||
int
|
|
||||||
main(int argc, char *argv[])
|
|
||||||
{
|
|
||||||
@@ -2066,6 +2095,8 @@ run:
|
|
||||||
if (!opt_title)
|
|
||||||
opt_title = (opt_line || !opt_cmd) ? "st" : opt_cmd[0];
|
|
||||||
|
|
||||||
+ signal(SIGUSR1, sig_usr_handler);
|
|
||||||
+ signal(SIGUSR2, sig_usr_handler);
|
|
||||||
setlocale(LC_CTYPE, "");
|
|
||||||
XSetLocaleModifiers("");
|
|
||||||
cols = MAX(cols, 1);
|
|
@ -1,6 +0,0 @@
|
|||||||
Directory for plugins. Checkout here
|
|
||||||
|
|
||||||
1. zsh-autosuggestions (https://github.com/zsh-users/zsh-autosuggestions)
|
|
||||||
2. zsh-syntax-highlighting (https://github.com/zsh-users/zsh-syntax-highlighting)
|
|
||||||
|
|
||||||
or install then with package manager in /usr/share/zsh/plugins/ and symlink.
|
|
1
shell/.haskeline
Normal file
1
shell/.haskeline
Normal file
@ -0,0 +1 @@
|
|||||||
|
editMode: Vi
|
5
shell/.inputrc
Normal file
5
shell/.inputrc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
set editing-mode vi
|
||||||
|
set show-mode-in-prompt on
|
||||||
|
set vi-ins-mode-string \1\e[6 q\2
|
||||||
|
set vi-cmd-mode-string \1\e[2 q\2
|
||||||
|
|
@ -8,8 +8,8 @@
|
|||||||
# for ssh logins, install and configure the libpam-umask package.
|
# for ssh logins, install and configure the libpam-umask package.
|
||||||
#umask 022
|
#umask 022
|
||||||
|
|
||||||
export EDITOR=emacsclient
|
export EDITOR=nvim
|
||||||
export VISUAL=emacsclient
|
export VISUAL=nvim
|
||||||
|
|
||||||
# if running bash
|
# if running bash
|
||||||
if [ -n "$BASH_VERSION" ]; then
|
if [ -n "$BASH_VERSION" ]; then
|
||||||
|
121
shell/.zshrc
121
shell/.zshrc
@ -1,107 +1,32 @@
|
|||||||
# History.
|
# Install zap:
|
||||||
|
# % cd ~/.local/share
|
||||||
|
# % git clone https://github.com/zap-zsh/zap.git --branch=release-v1
|
||||||
|
|
||||||
HISTFILE=${ZDOTDIR:-~}/.zsh_history
|
export FZF_DEFAULT_OPTS='--color=bw,hl:green,hl+:green'
|
||||||
HISTSIZE=10000
|
zstyle ':fzf-tab:*' fzf-flags $FZF_DEFAULT_OPTS
|
||||||
SAVEHIST=10000
|
|
||||||
setopt append_history
|
[ -f "${XDG_DATA_HOME:-$HOME/.local/share}/zap/zap.zsh" ] && source "${XDG_DATA_HOME:-$HOME/.local/share}/zap/zap.zsh"
|
||||||
setopt extended_history
|
plug "zap-zsh/supercharge"
|
||||||
setopt hist_expire_dups_first
|
plug "zap-zsh/exa"
|
||||||
setopt hist_find_no_dups
|
plug "zap-zsh/vim"
|
||||||
setopt hist_ignore_all_dups
|
|
||||||
setopt hist_ignore_space
|
autoload -Uz compinit
|
||||||
setopt hist_reduce_blanks
|
compinit
|
||||||
setopt inc_append_history
|
|
||||||
setopt share_history
|
plug "Aloxaf/fzf-tab"
|
||||||
|
plug "zap-zsh/fzf"
|
||||||
|
plug "zsh-users/zsh-autosuggestions"
|
||||||
|
plug "zsh-users/zsh-syntax-highlighting"
|
||||||
|
|
||||||
# Prompt.
|
# Prompt.
|
||||||
|
|
||||||
autoload -Uz vcs_info
|
autoload -Uz vcs_info
|
||||||
precmd () { vcs_info }
|
precmd () { vcs_info }
|
||||||
setopt prompt_subst
|
setopt prompt_subst
|
||||||
zstyle ':vcs_info:git:*' formats '%F{magenta}(%b)%r%f '
|
zstyle ':vcs_info:git:*' check-for-changes true
|
||||||
|
zstyle ':vcs_info:git:*' formats '%F{green}%r%f/%F{yellow}%S%f %F{magenta}(%b)%u%c%f '
|
||||||
|
zstyle ':vcs_info:git:*' actionformats '%F{green}%r%f/%F{yellow}%S%f %F{magenta}(%b|%a)%u%c%f '
|
||||||
|
zstyle ':vcs_info:*' nvcsformats '%F{green}%~%f%b '
|
||||||
zstyle ':vcs_info:*' enable git
|
zstyle ':vcs_info:*' enable git
|
||||||
PS1='%B%F{blue}%n@%m%f %F{green}%~%f%b ${vcs_info_msg_0_}%B%#%f%b '
|
PS1='%B%F{blue}%n@%m%f ${vcs_info_msg_0_}%B%#%f%b '
|
||||||
RPROMPT='%(?..%B%F{red}%?%f%b)'
|
RPROMPT='%(?..%B%F{red}%?%f%b)'
|
||||||
|
|
||||||
# Completion.
|
|
||||||
|
|
||||||
autoload -Uz compinit
|
|
||||||
compinit
|
|
||||||
zstyle ':completion:*' menu select
|
|
||||||
|
|
||||||
# Options.
|
|
||||||
|
|
||||||
setopt auto_cd
|
|
||||||
setopt extended_glob
|
|
||||||
setopt glob_complete
|
|
||||||
setopt interactive_comments
|
|
||||||
setopt no_flow_control
|
|
||||||
WORDCHARS=
|
|
||||||
|
|
||||||
# Terminal title.
|
|
||||||
|
|
||||||
autoload -Uz add-zsh-hook
|
|
||||||
|
|
||||||
function xterm_title_precmd () {
|
|
||||||
print -Pn -- '\e]2;%n@%m %~\a'
|
|
||||||
}
|
|
||||||
|
|
||||||
function xterm_title_preexec () {
|
|
||||||
print -Pn -- '\e]2;%n@%m %~ %# ' && print -n -- "${(q)1}\a"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ "$TERM" == (alacritty*|gnome*|konsole*|putty*|rxvt*|screen*|tmux*|xterm*) ]]; then
|
|
||||||
add-zsh-hook -Uz precmd xterm_title_precmd
|
|
||||||
add-zsh-hook -Uz preexec xterm_title_preexec
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Vterm directory.
|
|
||||||
|
|
||||||
function vterm_printf () {
|
|
||||||
if [ -n "$TMUX" ] && ([ "${TERM%%-*}" = "tmux" ] || [ "${TERM%%-*}" = "screen" ] ); then
|
|
||||||
# Tell tmux to pass the escape sequences through
|
|
||||||
printf "\ePtmux;\e\e]%s\007\e\\" "$1"
|
|
||||||
elif [ "${TERM%%-*}" = "screen" ]; then
|
|
||||||
# GNU screen (screen, screen-256color, screen-256color-bce)
|
|
||||||
printf "\eP\e]%s\007\e\\" "$1"
|
|
||||||
else
|
|
||||||
printf "\e]%s\e\\" "$1"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function vterm_prompt_end () {
|
|
||||||
vterm_printf "51;A$(pwd)";
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ "$INSIDE_EMACS" = 'vterm' ]]; then
|
|
||||||
add-zsh-hook -Uz chpwd vterm_prompt_end
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Plugins.
|
|
||||||
|
|
||||||
source_if_exists() {
|
|
||||||
[ -e "$1" ] && source "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=5,underline"
|
|
||||||
source_if_exists ~/.config/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.plugin.zsh
|
|
||||||
|
|
||||||
if source_if_exists ~/.config/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh; then
|
|
||||||
ZSH_HIGHLIGHT_STYLES[comment]=fg=cyan,bold
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Directory stack and ls colors.
|
|
||||||
|
|
||||||
DIRSTACKSIZE=10
|
|
||||||
setopt auto_pushd pushd_minus pushd_silent pushd_to_home pushd_ignore_dups
|
|
||||||
|
|
||||||
eval $(dircolors)
|
|
||||||
|
|
||||||
# Aliases.
|
|
||||||
|
|
||||||
alias dh='dirs -v'
|
|
||||||
alias e='emacsclient -n'
|
|
||||||
alias history='history -i'
|
|
||||||
alias ls='ls --color=tty'
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
set -g status-bg colour246
|
set -g status-bg colour0
|
||||||
set -g status-fg colour235
|
set -g status-fg colour7
|
||||||
|
|
||||||
set -g prefix C-t
|
set -g prefix C-t
|
||||||
bind-key C-t send-prefix
|
bind-key C-t send-prefix
|
||||||
|
@ -29,7 +29,7 @@ ifDark dark light = if isDark then dark else light
|
|||||||
myConfig =
|
myConfig =
|
||||||
def
|
def
|
||||||
{ modMask = mod4Mask,
|
{ modMask = mod4Mask,
|
||||||
terminal = "alacritty",
|
terminal = "st",
|
||||||
borderWidth = 3,
|
borderWidth = 3,
|
||||||
focusedBorderColor = ifDark "#a0522d" "#ff7f50",
|
focusedBorderColor = ifDark "#a0522d" "#ff7f50",
|
||||||
normalBorderColor = ifDark "#708090" "#bebebe",
|
normalBorderColor = ifDark "#708090" "#bebebe",
|
||||||
@ -59,9 +59,9 @@ myConfig =
|
|||||||
]
|
]
|
||||||
|
|
||||||
scratchpads =
|
scratchpads =
|
||||||
[ NS "terminal" "alacritty -t terminal" (title =? "terminal") floating,
|
[ NS "terminal" "st -T terminal" (title =? "terminal") floating,
|
||||||
NS "thunar" "thunar" (className =? "Thunar") floating,
|
NS "thunar" "thunar" (className =? "Thunar") floating,
|
||||||
NS "top" "alacritty -t top -e top" (title =? "top") floating
|
NS "top" "st -T top -e top" (title =? "top") floating
|
||||||
]
|
]
|
||||||
where
|
where
|
||||||
floating = customFloating $ RationalRect (1 / 6) (1 / 6) (2 / 3) (2 / 3)
|
floating = customFloating $ RationalRect (1 / 6) (1 / 6) (2 / 3) (2 / 3)
|
||||||
|
@ -12,3 +12,44 @@ emacs.cursorBlink: false
|
|||||||
emacs.scrollBarWidth: 20
|
emacs.scrollBarWidth: 20
|
||||||
emacs.background: #424242
|
emacs.background: #424242
|
||||||
emacs.foreground: #E0E0E0
|
emacs.foreground: #E0E0E0
|
||||||
|
|
||||||
|
XTerm.vt100.faceName: Iosevka NFM Light:size=12
|
||||||
|
|
||||||
|
! Colors from rmehri01/onenord.nvim
|
||||||
|
|
||||||
|
XTerm.vt100.foreground: #E5E9F0
|
||||||
|
XTerm.vt100.background: #2E3440
|
||||||
|
XTerm.vt100.highlightColor: #3F4758
|
||||||
|
XTerm.vt100.cursorColor: #81A1C1
|
||||||
|
|
||||||
|
! black
|
||||||
|
XTerm.vt100.color0: #3B4252
|
||||||
|
XTerm.vt100.color8: #4C566A
|
||||||
|
|
||||||
|
! red
|
||||||
|
XTerm.vt100.color1: #E06C75
|
||||||
|
XTerm.vt100.color9: #E06C75
|
||||||
|
|
||||||
|
! green
|
||||||
|
XTerm.vt100.color2: #9EC183
|
||||||
|
XTerm.vt100.color10: #9EC183
|
||||||
|
|
||||||
|
! yellow
|
||||||
|
XTerm.vt100.color3: #EBCB8B
|
||||||
|
XTerm.vt100.color11: #EBCB8B
|
||||||
|
|
||||||
|
! blue
|
||||||
|
XTerm.vt100.color4: #81A1C1
|
||||||
|
XTerm.vt100.color12: #81A1C1
|
||||||
|
|
||||||
|
! magenta
|
||||||
|
XTerm.vt100.color5: #B988B0
|
||||||
|
XTerm.vt100.color13: #B988B0
|
||||||
|
|
||||||
|
! cyan
|
||||||
|
XTerm.vt100.color6: #88C0D0
|
||||||
|
XTerm.vt100.color14: #8FBCBB
|
||||||
|
|
||||||
|
! white
|
||||||
|
XTerm.vt100.color7: #E5E9F0
|
||||||
|
XTerm.vt100.color15: #ECEFF4
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
! make right windows key and menu key a hyper key
|
! make right windows key and menu key a hyper key
|
||||||
remove mod4 = Super_R
|
remove mod4 = Super_R
|
||||||
|
keycode 133 = Escape NoSymbol Escape
|
||||||
keycode 134 = Hyper_R NoSymbol Hyper_R
|
keycode 134 = Hyper_R NoSymbol Hyper_R
|
||||||
keycode 135 = Hyper_R NoSymbol Hyper_R
|
keycode 135 = Hyper_R NoSymbol Hyper_R
|
||||||
add mod3 = Hyper_R
|
add mod3 = Hyper_R
|
||||||
|
@ -24,24 +24,26 @@ else
|
|||||||
( echo "Missing command(s):"; which xss-lock slock 2>&1 ) | xmessage -file -
|
( echo "Missing command(s):"; which xss-lock slock 2>&1 ) | xmessage -file -
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# run emacs daemon if not running
|
|
||||||
emacsclient --eval nil -a '' &
|
|
||||||
|
|
||||||
xsettingsd &
|
xsettingsd &
|
||||||
|
|
||||||
xsetroot -cursor_name left_ptr
|
xsetroot -cursor_name left_ptr
|
||||||
|
|
||||||
picom -b -I 1 -O 1 -i 1 -e 1 --no-fading-openclose || compton -b --no-fading-openclose
|
picom -b -I 1 -O 1 -i 1 -e 1 --no-fading-openclose || compton -b --no-fading-openclose
|
||||||
|
|
||||||
if which xmonad > /dev/null && test -f ~/.stumpwm.d/init.lisp; then
|
if which dwm > /dev/null; then
|
||||||
export SBCL_HOME="$(dirname $(dirname $(readlink -f $(which sbcl))))/lib/sbcl/"
|
lupan-clock &
|
||||||
exec stumpwm
|
exec dwm
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which xmonad > /dev/null && test -f ~/.config/xmonad/xmonad.hs; then
|
if which xmonad > /dev/null && test -f ~/.config/xmonad/xmonad.hs; then
|
||||||
exec xmonad
|
exec xmonad
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if which stumpwm > /dev/null && test -f ~/.stumpwm.d/init.lisp; then
|
||||||
|
export SBCL_HOME="$(dirname $(dirname $(readlink -f $(which sbcl))))/lib/sbcl/"
|
||||||
|
exec stumpwm
|
||||||
|
fi
|
||||||
|
|
||||||
if which qtile > /dev/null && test -f ~/.config/qtile/config.py; then
|
if which qtile > /dev/null && test -f ~/.config/qtile/config.py; then
|
||||||
exec qtile start
|
exec qtile start
|
||||||
fi
|
fi
|
||||||
@ -65,9 +67,4 @@ if which i3 > /dev/null; then
|
|||||||
exec i3
|
exec i3
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which dwm > /dev/null; then
|
|
||||||
lupan-clock &
|
|
||||||
exec dwm
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec xterm
|
exec xterm
|
||||||
|
@ -2,26 +2,26 @@
|
|||||||
|
|
||||||
THEME="$1"
|
THEME="$1"
|
||||||
|
|
||||||
|
if [ "$THEME" = "toggle" ] && grep Materia-dark ~/.config/xsettingsd/xsettingsd.conf > /dev/null; then
|
||||||
|
THEME=light
|
||||||
|
else
|
||||||
|
THEME=dark
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$THEME" = dark ]; then
|
if [ "$THEME" = dark ]; then
|
||||||
SIGNAL=USR1
|
|
||||||
BGCOLOR=#4a4a4a
|
BGCOLOR=#4a4a4a
|
||||||
GTK_THEME=Materia-dark
|
GTK_THEME=Materia-dark
|
||||||
elif [ "$THEME" = light ]; then
|
elif [ "$THEME" = light ]; then
|
||||||
SIGNAL=USR2
|
BGCOLOR=#cacaca
|
||||||
BGCOLOR=#dde1e3
|
|
||||||
GTK_THEME=Materia-light
|
|
||||||
elif [ "$THEME" = faff ]; then
|
|
||||||
SIGNAL=USR2
|
|
||||||
BGCOLOR=#4a4a4a
|
|
||||||
GTK_THEME=Materia-light
|
GTK_THEME=Materia-light
|
||||||
else
|
else
|
||||||
echo "error: unknown theme: should be either dark, light or faff" >&2
|
echo "error: unknown theme: should be either dark, light or toggle" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Background color
|
# Background color
|
||||||
if [ ! -x ~/.fehbg ]; then
|
if [ ! -x ~/.fehbg ]; then
|
||||||
xsetroot -solid "$BGCOLOR"
|
hsetroot -solid "$BGCOLOR"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Alacritty
|
# Alacritty
|
||||||
@ -29,9 +29,6 @@ if [ -f ~/.config/alacritty/alacritty.yml ]; then
|
|||||||
sed -i "s/^colors: [*].*/colors: *$THEME/" ~/.config/alacritty/alacritty.yml
|
sed -i "s/^colors: [*].*/colors: *$THEME/" ~/.config/alacritty/alacritty.yml
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ST (patched)
|
|
||||||
pkill -$SIGNAL -x st
|
|
||||||
|
|
||||||
# GTK
|
# GTK
|
||||||
if [ -f ~/.config/xsettingsd/xsettingsd.conf ]; then
|
if [ -f ~/.config/xsettingsd/xsettingsd.conf ]; then
|
||||||
sed -i -E "s#(Net/ThemeName) .*#\\1 \"${GTK_THEME}\"#" ~/.config/xsettingsd/xsettingsd.conf
|
sed -i -E "s#(Net/ThemeName) .*#\\1 \"${GTK_THEME}\"#" ~/.config/xsettingsd/xsettingsd.conf
|
||||||
|
Loading…
x
Reference in New Issue
Block a user