This commit is contained in:
Rikuoh Tsujitani 2023-08-17 14:14:00 +09:00
commit b3fcc22364
28 changed files with 3498 additions and 0 deletions

49
.Xresources Normal file
View file

@ -0,0 +1,49 @@
!! Import colorscheme
#define S_foreground #cacacc
#define S_background #1C1E27
#define S_black #3C3E47
#define S_red #E4436F
#define S_green #24e39d
#define S_yellow #EDA685
#define S_blue #2095B4
#define S_magenta #B367CF
#define S_cyan #00A5AF
#define S_lightgrey #b5b5ba
#define S_darkgrey #6C6F93
#define S_darkred #D95882
#define S_darkgreen #68DDC4
#define S_darkyellow #E8AEAA
#define S_darkblue #64A4BF
#define S_darkmagenta #B382CF
#define S_darkcyan #54AEB8
#define S_white #cacacc
!! Set colors
*background: S_background
*foreground: S_foreground
*color0: S_black
*color8: S_darkgrey
*color1: S_darkred
*color9: S_red
*color2: S_darkgreen
*color10: S_green
*color3: S_darkyellow
*color11: S_yellow
*color4: S_darkblue
*color12: S_blue
*color5: S_darkmagenta
*color13: S_magenta
*color6: S_darkcyan
*color14: S_cyan
*color7: S_lightgrey
*color15: S_white
!! Set DPI
Xft.dpi: 140
Xft.auohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.antialias: 1
Xft.rgba: rgb
Xcursor.size: 32

79
.alacritty.yml Normal file
View file

@ -0,0 +1,79 @@
# シェル
shell:
program: /usr/bin/zsh
args:
- --login
# カーソル
cursor:
style:
shape: Underline
blinking: Always
unfocused_hollow: false
blink_interval: 470
# タブスペース
tabspaces: 4
# ウインドウ
window:
opacity: 0.95
padding:
x: 0
y: 0
dynamic_padding: false
# フォント
font:
size: 13
normal:
family: 'UDEV Gothic 35NFLG'
style: Regular
bold:
family: 'UDEV Gothic 35NFLG'
style: Bold
italic:
family: 'UDEV Gothic 35NFLG'
style: Italic
bold_italic:
family: 'UDEV Gothic 35NFLG'
style: Bold Italic
# 環境変数
env:
TERM: alacritty
# Colors (Horizon Dark)
colors:
# Primary colors
primary:
background: '0x1c1e26'
foreground: '0xe0e0e0'
# Cursor
cursor:
cursor: '0x00ff00'
vi_mode_cursor:
cursor: '0x00ff00'
# Normal colors
normal:
black: '0x16161c'
red: '0xe95678'
green: '0x29d398'
yellow: '0xfab795'
blue: '0x26bbd9'
magenta: '0xee64ac'
cyan: '0x59e1e3'
white: '0xd5d8da'
# Bright colors
bright:
black: '0x5b5858'
red: '0xec6a88'
green: '0x3fdaa4'
yellow: '0xfbc3a7'
blue: '0x3fc4de'
magenta: '0xf075b5'
cyan: '0x6be4e6'
white: '0xd5d8da'

19
.gtkrc-2.0 Normal file
View file

@ -0,0 +1,19 @@
# DO NOT EDIT! This file will be overwritten by LXAppearance.
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
include "/home/riq0h/.gtkrc-2.0.mine"
gtk-theme-name="Breeze"
gtk-icon-theme-name="Qogir"
gtk-font-name="Noto Sans CJK JP 11"
gtk-cursor-theme-name="Qogir"
gtk-cursor-theme-size=0
gtk-toolbar-style=GTK_TOOLBAR_TEXT
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=0
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle="hintfull"
gtk-xft-rgba="rgb"

2
.profile Normal file
View file

@ -0,0 +1,2 @@
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/riq0h/.fzf/bin:/home/riq0h/.local/share/gem/ruby/3.0.0/bin:/home/riq0h/go/bin"
[ "$XDG_CURRENT_DESKTOP" = "KDE" ] || [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] || export QT_QPA_PLATFORMTHEME="qt5ct"

114
.tmux.conf Normal file
View file

@ -0,0 +1,114 @@
# prefixキーをM-aに変更する
set -g prefix M-a
# M-bのキーバインドを解除する
unbind M-b
# マウス操作を有効にする
set-option -g mouse on
# デフォルトシェルの設定
set-option -g default-shell /bin/zsh
set-option -g default-command /bin/zsh
# キーストロークのディレイを減らす
set -sg escape-time 0
# ウィンドウのインデックスを1から始める
set -g base-index 1
# ペインのインデックスを1から始める
set-window-option -g pane-base-index 1
# 設定ファイルをリロードする
bind-key r source-file ~/.tmux.conf \; display "Reloaded."
# M-a*2でtmux内のプログラムにM-aを送る
bind-key M-a send-prefix
# ウインドウ操作
bind-key -n M-s split-window -v -c "#{pane_current_path}"
bind-key -n M-v split-window -h -c "#{pane_current_path}"
bind-key -n M-Left select-pane -L
bind-key -n M-Right select-pane -R
bind-key -n M-Up select-pane -U
bind-key -n M-Down select-pane -D
bind-key -n M-w new-window
bind-key -n M-Tab select-window -t :+
bind-key -n M-1 select-window -t 1
bind-key -n M-2 select-window -t 2
bind-key -n M-3 select-window -t 3
bind-key -n M-4 select-window -t 4
bind-key -n M-5 select-window -t 5
bind-key -n M-6 select-window -t 6
bind-key -n M-7 select-window -t 7
bind-key -n M-8 select-window -t 8
bind-key -n M-9 select-window -t 9
bind-key -n M-h select-pane -L
bind-key -n M-l select-pane -R
bind-key -n M-j select-pane -D
bind-key -n M-k select-pane -U
bind-key -n M-q kill-pane
bind-key q kill-window
# コピーモード
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel -bi"
bind-key -T copy-mode-vi Y send-keys -X copy-line "xsel -bi"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel -bi"
bind-key Space copy-mode
bind-key p paste-buffer
# Vimのキーバインドでペインをリサイズする
bind-key -r H resize-pane -L 3
bind-key -r J resize-pane -D 3
bind-key -r K resize-pane -U 3
bind-key -r L resize-pane -R 3
# 256色端末を使用する
set -g default-terminal "tmux-256color"
set -ga terminal-overrides ",$TERM:Tc"
# ペインの枠線
set -g pane-border-lines single
# ステータスバーを設定する
set-option -g status-position "top"
set -g status-justify "left"
set -g status "on"
set -g status-left-style "none"
set -g message-command-style "fg=#c5cdd9,bg=#414550"
set -g status-right-style "none"
set -g pane-active-border-style "fg=#a0c980"
set -g status-style "none,bg=#33353f"
set -g message-style "fg=#c5cdd9,bg=#414550"
set -g pane-border-style "fg=#414550"
set -g status-right-length "100"
set -g status-left-length "100"
set-window-option -g window-status-activity-style "none,fg=#a0c980,bg=#33353f"
set-window-option -g window-status-separator ""
set-window-option -g window-status-style "none,fg=#c5cdd9,bg=#33353f"
set -g status-left "#[fg=#2c2e34,bg=#a0c980] #S #[fg=#a0c980,bg=#33353f,nobold,nounderscore,noitalics]"
set -g status-right ""
set-window-option -g window-status-format "#[fg=#33353f,bg=#33353f,nobold,nounderscore,noitalics]#[default] #I #W #[fg=#33353f,bg=#33353f,nobold,nounderscore,noitalics]"
set-window-option -g window-status-current-format "#[fg=#33353f,bg=#414550,nobold,nounderscore,noitalics]#[fg=#c5cdd9,bg=#414550] #I #W #[fg=#414550,bg=#33353f,nobold,nounderscore,noitalics]"
## リフレッシュの間隔を設定する
set -g status-interval 1
## フォーカスイベント
set -g focus-events on
## ヴィジュアルノーティフィケーションを有効にする
set-window-option -g monitor-activity on
set -g visual-activity on
## Alcrittyでtmuxを有効にする
set-option -ga terminal-overrides ",alacritty:RGB"

8
.xinitrc Normal file
View file

@ -0,0 +1,8 @@
export LANG="ja_JP.UTF-8"
export XMODIFIERS="@im=fcitx"
export XMODIFIER="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx
exec i3
xset -b

6
.xprofile Normal file
View file

@ -0,0 +1,6 @@
export LANG="ja_JP.UTF-8"
export XMODIFIERS="@im=fcitx"
export XMODIFIER="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx

37
.zpreztorc Normal file
View file

@ -0,0 +1,37 @@
# 色彩
zstyle ':prezto:*:*' color 'yes'
# プリロード
zstyle ':prezto:load' pmodule \
'archive' \
'environment' \
'terminal' \
'editor' \
'history' \
'directory' \
'spectrum' \
'utility' \
'completion' \
'syntax-highlighting' \
'history-substring-search' \
'prompt'
# キーマップ
zstyle ':prezto:module:editor' key-bindings 'emacs'
# テーマ
zstyle ':prezto:module:prompt' theme 'pure'
# ハイライト
zstyle ':prezto:module:syntax-highlighting' color 'yes'
zstyle ':prezto:module:syntax-highlighting' highlighters \
'main' \
'brackets' \
'pattern'
# 途中まで打ったコマンドの履歴を検索
zstyle ':prezto:module:history-substring-search' case-sensitive 'yes'
zstyle ':prezto:module:history-substring-search' color 'yes'
zstyle ':prezto:module:history-substring-search:color' found ''
zstyle ':prezto:module:history-substring-search:color' not-found ''
zstyle ':prezto:module:history-substring-search' globbing-flags ''

101
.zshrc Normal file
View file

@ -0,0 +1,101 @@
# Preztoにぶん投げ
if [[ -s "${ZDOTDIR:-$HOME}/.zprezto/init.zsh" ]]; then
source "${ZDOTDIR:-$HOME}/.zprezto/init.zsh"
fi
# 上位階層に移動するコマンド
alias a='cd ../'
alias aa='cd ../../'
alias aaa='cd ../../../'
# デフォルトエディタをVimにする
export EDITOR=nvim
alias sudo='sudo -E '
alias v=nvim
alias vim=nvim
# paruを短縮する
alias poo=paru
# exaをls代わりにする
alias ls='exa --icons -a'
alias lsa='exa --icons -T -a'
# batをcatの代わりにする
alias cat=bat
# clearを短縮する
alias cls=clear
# 天気情報
alias wttr='() { curl -H "Accept-Language: ${LANG%_ja}" wttr.in/"${1:-Saitama}" }'
# BAT関連
export BAT_THEME="TwoDark"
# Zoxide関連
eval "$(zoxide init zsh)"
zle -N zi
bindkey '^z' zi
# Tailscale関連
alias tlsc='sudo tailscale up --exit-node-allow-lan-access --exit-node=mystech'
alias tlscd='sudo tailscale down'
# fzf関連
export PATH="$PATH:$HOME/.fzf/bin"
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git"'
export FZF_DEFAULT_OPTS='--ansi --height 40% --reverse --border=none'
export FZF_CTRL_T_COMMAND='rg --files --hidden --follow --glob "!**/.git/*"'
export FZF_CTRL_T_OPTS="
--preview 'bat --color=always --style=header,grid {}'
--preview-window=right:60%"
fadd() {
local out q n addfiles
while out=$(
git status --short |
awk '{if (substr($0,2,1) !~ / /) print $2}' |
fzf-tmux --multi --exit-0 --expect=ctrl-d); do
q=$(head -1 <<< "$out")
n=$[$(wc -l <<< "$out") - 1]
addfiles=(`echo $(tail "-$n" <<< "$out")`)
[[ -z "$addfiles" ]] && continue
if [ "$q" = ctrl-d ]; then
git diff --color=always $addfiles | less -R
else
git add $addfiles
fi
done
}
rga-fzf() {
RG_PREFIX="rga --files-with-matches"
local file
file="$(
FZF_DEFAULT_COMMAND="$RG_PREFIX '$1'" \
fzf --sort --preview="[[ ! -z {} ]] && rga --pretty --context 5 {q} {}" \
--phony -q "$1" \
--bind "change:reload:$RG_PREFIX {q}" \
--preview-window="70%:wrap"
)" &&
echo "opening $file" &&
xdg-open "$file"
}
# tmux関連
alias tx="tmuximum"
if [ -z $TMUX ]; then
tmuximum
fi
# 履歴関連
HISTFILE=~/.zsh_history # ヒストリを保存するファイル
HISTSIZE=10000 # メモリに保存されるヒストリの件数
SAVEHIST=10000 # 保存されるヒストリの件数
setopt bang_hist # !を使ったヒストリ展開を行う(d)
setopt extended_history # ヒストリに実行時間も保存する
setopt hist_reduce_blanks # 余分なスペースを削除してヒストリに保存する
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

81
alacritty.yml Normal file
View file

@ -0,0 +1,81 @@
# シェル
shell:
program: /Windows/System32/wsl.exe ~ -d Distrod
# カーソル
cursor:
style:
shape: Underline
blinking: Always
unfocused_hollow: false
blink_interval: 470
# タブスペース
tabspaces: 4
# フォント
font:
size: 12
normal:
family: 'UDEV Gothic 35NFLG'
style: Regular
bold:
family: 'UDEV Gothic 35NFLG'
style: Bold
italic:
family: 'UDEV Gothic 35NFLG'
style: Italic
bold_italic:
family: 'UDEV Gothic 35NFLG'
style: Bold Italic
# ウインドウ
window:
dimensions:
columms: 370
line: 250
decorations: full
opacity: 0.97
padding:
x: 0
y: 0
dynamic_padding: false
# 環境変数
env:
TERM: alacritty
# Colors (Horizon Dark)
colors:
# Primary colors
primary:
background: '0x1c1e26'
foreground: '0xe0e0e0'
# Cursor colors
cursor:
cursor: '0x00ff00'
vi_mode_cursor:
cursor: '0x00ff00'
# Normal colors
normal:
black: '0x16161c'
red: '0xe95678'
green: '0x29d398'
yellow: '0xfab795'
blue: '0x26bbd9'
magenta: '0xee64ac'
cyan: '0x59e1e3'
white: '0xd5d8da'
# Bright colors
bright:
black: '0x5b5858'
red: '0xec6a88'
green: '0x3fdaa4'
yellow: '0xfbc3a7'
blue: '0x3fc4de'
magenta: '0xf075b5'
cyan: '0x6be4e6'
white: '0xd5d8da'

165
colors-rofi.rasi Normal file
View file

@ -0,0 +1,165 @@
* {
active-background: #68DDC4;
active-foreground: @foreground;
normal-background: @background;
normal-foreground: @foreground;
urgent-background: #D95882;
urgent-foreground: @foreground;
alternate-active-background: @background;
alternate-active-foreground: @foreground;
alternate-normal-background: @background;
alternate-normal-foreground: @foreground;
alternate-urgent-background: @background;
alternate-urgent-foreground: @foreground;
selected-active-background: #D95882;
selected-active-foreground: @foreground;
selected-normal-background: #f08080;
selected-normal-foreground: @background;
selected-urgent-background: #D95882;
selected-urgent-foreground: @foreground;
background-color: @background;
background: #1C1E27;
foreground: #cacacc;
border-color: #E8AEAA;
spacing: 4;
}
#window {
background-color: @background;
border: 2px;
padding: 1ch;
width: 500px;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 2px 0px 0px;
border-color: @border-color;
padding: 1px;
}
#textbox {
text-color: @foreground;
}
#inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#textbox-prompt-colon {
expand: false;
str: "";
margin: 0px 0.3em 0em 0em;
text-color: @normal-foreground;
}
#listview {
fixed-height: 0;
border: 2px 0px 0px;
border-color: @border-color;
spacing: 0px;
scrollbar: false;
padding: 6px 0px 0px;
lines: 5;
}
#element {
border: 0;
padding: 8px;
}
#element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
#element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
#element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
#element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
#element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
#scrollbar {
width: 4px;
border: 0;
handle-width: 8px;
padding: 0;
}
#sidebar {
border: 2px 0px 0px;
border-color: @border-color;
}
#button {
text-color: @normal-foreground;
}
#button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
#inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px;
}
#case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
#entry {
spacing: 0;
text-color: @normal-foreground;
}
#prompt {
spacing: 1;
margin: 0px 0px 4px 0em;
text-color: @normal-foreground;
}

261
config Normal file
View file

@ -0,0 +1,261 @@
# 神は言った――「光あれ」
set $mod Mod4
# ウインドウタイトルのフォント
font pango:Noto Sans CJK JP 8
# フローティングウインドウの操作キー
floating_modifier $mod
# ターミナル
bindsym $mod+Return exec --no-startup-id alacritty
# ファイラー
bindsym $mod+m exec --no-startup-id thunar
# タスクキル
bindsym $mod+q kill
# ランチャー
bindsym $mod+z exec --no-startup-id "rofi -show drun"
bindsym $mod+x exec --no-startup-id "rofi -show run"
# ウインドウフォーカス
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# 代替ウインドウフォーカス
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# ウインドウ交換
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# 代替ウインドウ交換
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# 水平ウインドウ分割
bindsym $mod+s split v
# 垂直ウインドウ分割
bindsym $mod+v split h
# フルスクリーン
bindsym $mod+f fullscreen toggle
# ウインドウの分割切り替え
bindsym $mod+e layout toggle split
# ウインドウフロート
bindsym $mod+w floating toggle
# フロートウインドウフォーカス
bindsym $mod+space focus mode_toggle
# 親コンテナへのフォーカス
bindsym $mod+a focus parent
# 子コンテナへのフォーカス
bindsym $mod+b focus child
# ワークスペース変数
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# ワークスペースの移動
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
# ウインドウを他のワークスペースに移動する
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
# 設定再読込み
bindsym $mod+Shift+c reload
# 再起動
bindsym $mod+Shift+r restart
# ウインドウリサイズ
mode "RESIZE" {
bindsym h resize shrink width 10 px or 5 ppt
bindsym j resize grow height 10 px or 5 ppt
bindsym k resize shrink height 10 px or 5 ppt
bindsym l resize grow width 10 px or 5 ppt
# 代替
bindsym Left resize shrink width 10 px or 5 ppt
bindsym Down resize grow height 10 px or 5 ppt
bindsym Up resize shrink height 10 px or 5 ppt
bindsym Right resize grow width 10 px or 5 ppt
# 通常モード遷移
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "RESIZE"
# コマンドモード――これによりキーバインドは実質無制限となる!
bindsym $mod+c mode "CMD"
mode "CMD"{
bindsym v exec vivaldi-stable; mode "default"
bindsym f exec "flameshot gui" mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+c mode "default"
}
# シャットダウンシークエンス
bindsym $mod+Shift+e mode "SHUTDOWN SEQUENCE"
mode "SHUTDOWN SEQUENCE"{
bindsym p exec "systemctl poweroff"
bindsym r exec "systemctl reboot"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+Shift+e mode "default"
}
# ステータスバーの色
set $background #2B303B
set $foreground #C0C5CE
set $lightred #BF616A
set $lightgreen #A3BE8C
set $lightyellow #EBCB8B
set $lightblue #8FA1B3
set $lightmagenta #B48EAD
set $lightcyan #96B5B4
set $lightwhite #C0C5CE
set $pink #FFB6C1
set $orange #F08080
# ステータスバー関連
bar {
font pango:UDEV Gothic 35 13
mode dock
position top
workspace_buttons yes
strip_workspace_numbers yes
binding_mode_indicator yes
tray_padding 2
colors {
background $background
focused_background $background
statusline $lightred
focused_statusline $lightred
# 左からborder, bg, fg
focused_workspace $orange $orange $background
active_workspace $background $background $foreground
inactive_workspace $background $background $foreground
urgent_workspace $green $green $background
binding_mode $green $green $background
}
status_command /usr/bin/bumblebee-status -m playerctl datetime \
-p playerctl.hide="true" playerctl.format="{{artist}} - {{title}}" playerctl.layout="playerctl.song" datetime.format="%m/%d %H:%M" -t monotone
}
# i3wm全体の色
set $bg #1C1E27
set $fg #CACACC
set $darkred #D95882
set $red #E4436F
set $darkgreen #68DDC4
set $green #24E39D
set $darkyellow #E8AEAA
set $yellow #EDA685
set $darkblue #64A4BF
set $blue #2095B4
set $darkmagenta #B382CF
set $darkcyan #54AEB8
set $cyan #00A5AF
set $darkwhite #CACACC
set $white #CACACA
set $darkgrey #6C6F93
# フォーカスカラー
# class border background text indicator child_border
client.focused $bg $darkgrey $fg $yellow $darkyellow
client.unfocused $bg $bg $fg $yellow $bg
# ウインドウの枠の太さ
for_window [class="^.*"] border pixel 2
# ウインドウ間の隙間の広さ
gaps top 6
gaps bottom 6
gaps right 6
gaps left 6
gaps inner 6
# マウスでフォーカスしない
focus_follows_mouse no
# 自動起動
exec --no-startup-id dunst
exec --no-startup-id "picom -b"
exec --no-startup-id xfce4-power-manager
exec --no-startup-id fcitx5
exec --no-startup-id vivaldi-stable
exec --no-startup-id discord
exec --no-startup-id slack
exec --no-startup-id parcellite
exec --no-startup-id "./sh/mount.sh"
exec --no-startup-id "feh --no-fehbg --bg-scale ~/Wallpaper.png"
exec --no-startup-id "xset r rate 200 30"
# フローティング起動一覧
for_window [class="Thunar"] floating enable, resize set 1024 780
for_window [class="Lxappearance"] floating enable, resize set 800 600
for_window [class="Pavucontrol"] floating enable, resize set 800 600
for_window [class="fcitx5-config-qt"] floating enable
for_window [class="mozc_tool"] floating enable, resize set 800 600
for_window [class="VirtualBox Manager"] floating enable, resize set 1280 1024
for_window [class="VirtualBox Machine"] floating enable
for_window [class="Io.github.celluloid_player.Celluloid"] floating enable
for_window [class="feh"] floating enable, resize set 1280 1024
for_window [class="transmission-gtk"] floating enable
for_window [class="stacer"] floating enable
for_window [class="Mousepad"] floating enable, resize set 1280 1024
for_window [class="Xfce4-power-manager-settings"] floating enable, resize 1024 780
for_window [class="qt5ct"] floating enable, resize set 1024 780
for_window [class="Qtconfig-qt4"] floating enable, resize set 1024 780
for_window [class="kdeconnect-app"] floating enbale
# ワークスペース指定一覧
assign [class="discord"] workspace 3
assign [class="Slack"] workspace 3

5
config.rasi Normal file
View file

@ -0,0 +1,5 @@
configuration {
font: "Noto Sans CJK JP 18";
drun-display-format: "{name}";
}
@import "colors-rofi.rasi"

245
dunstrc Normal file
View file

@ -0,0 +1,245 @@
[global]
font = Noto Sans CJK JP 12
# Allow a small subset of html markup:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
# If markup is not allowed, those tags will be stripped out of the
# message.
markup = yes
plain_text = no
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# Markup is allowed
format = "<b>%s</b>\n%b"
# Sort messages by urgency.
sort = no
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# The frequency with wich text that is longer than the notification
# window allows bounces back and forth.
# This option conflicts with "word_wrap".
# Set to 0 to disable.
bounce_freq = 0
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = -1
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = no
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Hide duplicate's count and stack them
stack_duplicates = yes
hide_duplicate_count = yes
width = 300
height = 500
offset = 12x39
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing windowmanager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 5
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
idle_threshold = 0
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a windowmanager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern windowmanagers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 5
# Display indicators for URLs (U) and actions (A).
show_indicators = no
# The height of a single line. If the height is smaller than the
# font height, it will get raised to the font height.
# This adds empty space above and under the text.
line_height = 3
# Draw a line of "separatpr_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 2
# Padding between text and separator.
padding = 6
# Horizontal padding.
horizontal_padding = 6
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/google-chrome-stable -new-tab
# Align icons left/right/off
icon_position = left
max_icon_size = 80
# Paths to default icons.
icon_path = /usr/share/icons/Qogir/symbolic/status
frame_width = 1
frame_color = "#a3be8c"
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = ctrl+space
# Close all notifications.
close_all = ctrl+shift+space
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1".
history = ctrl+grave
# Context menu.
context = ctrl+shift+period
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
frame_color = "#2b303b"
foreground = "#c0c5ce"
background = "#2b303b"
#background = "#2B313C"
timeout = 3
[urgency_normal]
frame_color = "#a3be8c"
foreground = "#c0c5ce"
background = "#2b303b"
#background = "#2B313C"
timeout = 3
[urgency_critical]
frame_color = "#f08080"
foreground = "#c0c5ce"
background = "#2b303b"
#background = "#2B313C"
timeout = 5
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

733
init.lua Normal file
View file

@ -0,0 +1,733 @@
----GENERAL SETTINGS
local opt = vim.opt
vim.g.mapleader = ' '
opt.helplang = 'ja', 'en'
opt.tabstop = 2
opt.shiftwidth = 2
opt.expandtab = true
opt.list = true
opt.listchars = {tab='»-', trail='-', eol='', extends='»', precedes='«', nbsp='%'}
opt.wrap = true
opt.signcolumn = 'yes'
opt.smartcase = true
opt.ignorecase = true
opt.wrapscan = true
opt.hidden = true
opt.startofline = false
opt.showmatch = true
opt.matchtime = 1
opt.guicursor = ''
opt.cursorline = true
opt.wildmenu = true
opt.number = true
opt.showcmd = true
opt.autoread = true
opt.hlsearch = true
opt.backspace:append{'indent', 'eol', 'start'}
opt.showtabline = 1
opt.laststatus = 3
opt.ambiwidth = 'single'
opt.confirm = true
opt.pumblend = 15
opt.winblend = 15
opt.mouse = 'a'
opt.cmdheight = 2
opt.timeout = true
opt.ttimeout = true
opt.ttimeoutlen = 10
opt.clipboard:append{'unnamedplus'}
opt.termguicolors = true
opt.showmode = false
opt.completeopt:append{'menuone', 'noinsert'}
opt.backup = false
opt.swapfile = false
opt.encoding = 'utf-8'
opt.fileencodings = {'utf-8', 'iso-2022-jp', 'cp932', 'euc-jp', 'sjis'}
vim.opt.shortmess:append('I')
vim.cmd('set completeopt-=preview')
----ADVANCED SETTINGS
--KEEP CURSOR
vim.api.nvim_create_autocmd({ 'BufReadPost' }, {
pattern = { '*' },
callback = function()
vim.api.nvim_exec('silent! normal! g`"zv', false)
end,
})
----KEY MAPPING
--EDIT
vim.keymap.set('n', 'ew', ':<C-u>w<CR>')
vim.keymap.set('n', 'eq', ':<C-u>wq<CR>')
vim.keymap.set('n', 'Q', ':<C-u>quit!<CR>')
vim.keymap.set('n', '<leader>q', ':<C-u>bd<CR>')
vim.keymap.set('n', '<C-s>', ':<C-u>%s///cg<Left><Left><Left><Left>')
vim.keymap.set('n', '<C-c>', ":<C-u>echo wordcount()['chars']<CR>")
--TAB
vim.keymap.set('n', '<leader><TAB>', ':bprev<CR>', {silent = true})
vim.keymap.set('n', '<leader>t', ':tabclose<CR>', {silent = true})
vim.keymap.set('n', ']b', ':bnext<CR>', {silent =true})
--SPLIT
vim.keymap.set('n', 'sv', ':<C-u>vsplit<CR>', {silent = true})
vim.keymap.set('n', 'sp', ':<C-u>split<CR>', {silent =true})
--NOP
vim.keymap.set('n', '<MiddleMouse>', '<Nop>')
vim.keymap.set('n', '<2-MiddleMouse>', '<Nop>')
vim.keymap.set('n', '<3-MiddleMouse>', '<Nop>')
vim.keymap.set('n', '<4-MiddleMouse>', '<Nop>')
vim.keymap.set('i', '<1-MiddleMouse>', '<Nop>')
vim.keymap.set('i', '<2-MiddleMouse>', '<Nop>')
vim.keymap.set('i', '<3-MiddleMouse>', '<Nop>')
vim.keymap.set('i', '<4-MiddleMouse>', '<Nop>')
vim.keymap.set('n', 'qq', '<Nop>')
vim.keymap.set('n', 'gg', '<Nop>')
vim.keymap.set('n', 'ZZ', '<Nop>')
vim.keymap.set('n', 'ZQ', '<Nop>')
vim.keymap.set('n', '<C-z>', '<Nop>')
vim.keymap.set('n', '<F1>', '<Nop>')
vim.keymap.set('n', 'x', '"_x')
vim.keymap.set('v', 'x', '"_x')
vim.keymap.set('n', 's', '"_s')
--MOVE
vim.keymap.set('n', 'k', 'gk')
vim.keymap.set('n', 'j', 'gj')
vim.keymap.set('n', '<UP>', 'gk')
vim.keymap.set('n', '<DOWN>', 'gj')
vim.keymap.set('n', 'O', ":<C-u>call append(expand('.'), '')<CR>j")
vim.keymap.set('n', 'sh', '<C-w>h')
vim.keymap.set('n', 'sj', '<C-w>j')
vim.keymap.set('n', 'sk', '<C-w>k')
vim.keymap.set('n', 'sl', '<C-w>l')
vim.keymap.set('n', 'sH', '<C-w>H')
vim.keymap.set('n', 'sJ', '<C-w>J')
vim.keymap.set('n', 'sK', '<C-w>K')
vim.keymap.set('n', 'sL', '<C-w>L')
--COPY
vim.keymap.set('n', 'p', ']p')
vim.keymap.set('n', 'P', ']P')
vim.keymap.set('n', ']p', 'p')
vim.keymap.set('n', ']P', 'P')
----PLUGINS
--MANAGER
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',
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require('lazy').setup({
defaults = {lazy = true},
{'nvim-lualine/lualine.nvim', event = 'VeryLazy'},
{'nvim-telescope/telescope.nvim', cmd = 'Telescope'},
{'nvim-telescope/telescope-file-browser.nvim', event = 'VeryLazy'},
{'lewis6991/gitsigns.nvim', config = true, event = 'VeryLazy'},
{'ryanoasis/vim-devicons', event = 'VeryLazy'},
{'nvim-tree/nvim-web-devicons', event = 'VeryLazy'},
{'williamboman/mason.nvim', event = 'BufRead', cmd = {'Mason', 'MasonInstall'},},
{'neovim/nvim-lspconfig', event = 'LspAttach'},
{'williamboman/mason-lspconfig.nvim', event = 'LspAttach'},
{'mfussenegger/nvim-dap', event = 'LspAttach'},
{'rcarriga/nvim-dap-ui', event = 'LspAttach'},
{'suketa/nvim-dap-ruby', config = true, event = 'LspAttach'},
{'j-hui/fidget.nvim', config = true, event = 'LspAttach'},
{'sainnhe/edge', event = 'VeryLazy'},
{'nvim-lua/plenary.nvim', event = 'VeryLazy'},
{'stevearc/dressing.nvim', event = 'VeryLazy'},
{'hrsh7th/nvim-cmp', event = 'InsertEnter, CmdlineEnter'},
{'hrsh7th/cmp-nvim-lsp', event = 'InsertEnter'},
{'hrsh7th/cmp-buffer', event = 'InsertEnter'},
{'hrsh7th/cmp-path', event = 'InsertEnter'},
{'hrsh7th/cmp-vsnip', event = 'InsertEnter'},
{'hrsh7th/cmp-cmdline', event = 'ModeChanged'},
{'hrsh7th/cmp-nvim-lsp-signature-help', event = 'InsertEnter'},
{'hrsh7th/cmp-nvim-lsp-document-symbol', event = 'InsertEnter'},
{'hrsh7th/cmp-calc', event = 'InsertEnter'},
{'onsails/lspkind.nvim', event = 'InsertEnter'},
{'hrsh7th/vim-vsnip', event = 'InsertEnter'},
{'hrsh7th/vim-vsnip-integ', event = 'InsertEnter'},
{'rafamadriz/friendly-snippets', event = 'InsertEnter'},
{'nvim-treesitter/nvim-treesitter', event = 'BufNewFile, BufRead'},
{'yioneko/nvim-yati', event = 'VeryLazy'},
{'windwp/nvim-autopairs', config = true, event = 'InsertEnter'},
{'andymass/vim-matchup', event = 'VeryLazy'},
{'Maan2003/lsp_lines.nvim', config = true, event = 'BufNewFile, BufRead'},
{'lambdalisue/suda.vim', cmd = {'SudaWrite', 'SudaRead'},},
{'lukas-reineke/indent-blankline.nvim', event = 'BufNewFile, BufRead'},
{'kevinhwang91/nvim-hlslens', event = 'BufNewFile, BufRead'},
{'numToStr/Comment.nvim', config = true, event = 'VeryLazy'},
{'rhysd/clever-f.vim', event = 'VeryLazy'},
{'luochen1990/rainbow', event = 'BufNewFile, BufRead'},
{'echasnovski/mini.surround', event = 'ModeChanged'},
{'echasnovski/mini.ai', event = 'ModeChanged'},
{'mvllow/modes.nvim', event = 'BufNewFile, BufRead'},
{'monaqa/dial.nvim', event = 'VeryLazy'},
{'tpope/vim-repeat', event = 'VeryLazy'},
{'dstein64/vim-startuptime', cmd = 'StartupTime'},
{'vim-jp/vimdoc-ja', ft = 'help'},
--non-lazy
{'vim-denops/denops.vim', lazy = false},
{'yuki-yano/fuzzy-motion.vim', lazy = false},
{'lambdalisue/gin.vim', lazy = false},
{'rbtnn/vim-ambiwidth', lazy = false},
{'lambdalisue/kensaku-search.vim', lazy = false},
{'lambdalisue/kensaku.vim', lazy = false},
{'brenoprata10/nvim-highlight-colors', config = true, lazy = false},
--disable default plugins
performance = {
rtp = {
disable_plugins = {
'netrw',
'netrwPlugin',
'netrwSettings',
'netrwFileHandlers',
'gzip',
'zip',
'zipPlugin',
'tar',
'tarPlugin',
'getscript',
'getscriptPlugin',
'vimball',
'vimballPlugin',
'2html_plugin',
'logipat',
'rrhelper',
'spellfile_plugin',
'sql_completion',
},
},
},
})
--lualine
require('lualine').setup {
options = {
icons_enabled = true,
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
disabled_filetypes = {'TelescopePrompt'},
always_divide_middle = true,
colored = false,
globalstatus = true,
},
sections = {
lualine_a = {''},
lualine_b = {'branch', 'diff'},
lualine_c = {
{
'filename',
path = 1,
file_status = true,
shorting_target = 40,
symbols = {
modified = '[+]',
readonly = '[RO]',
unnamed = 'Untitled',
}
}
},
lualine_x = {'filetype'},
lualine_y = {
{
'diagnostics',
source = {'nvim-lsp'},
},
{'progress'},
{'location'}
},
lualine_z = {''}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
extensions = {}
}
--telescope
require('telescope').setup({
defaults = {
borderchars = { "", "", "", "", "", "", "", "" },
color_devicons = true,
file_ignore_patterns = { 'node_modules', '.git', '.svg', '.npm', 'go', 'MEGA'},
mappings = {
i = {
['<esc>'] = require('telescope.actions').close,
},
},
},
})
vim.keymap.set('n', '<leader>.', '<cmd>Telescope find_files hidden=true<CR>')
vim.keymap.set('n', '<leader>,', '<cmd>Telescope oldfiles<CR>')
vim.keymap.set('n', '<leader>l', '<cmd>Telescope live_grep grep_open_files=true<CR>')
vim.keymap.set('n', '<leader>k', '<cmd>Telescope live_grep<CR>')
vim.keymap.set('n', '<leader>f', '<cmd>Telescope buffers<CR>')
vim.keymap.set('n', '<leader>h', '<cmd>Telescope help_tags<CR>')
vim.keymap.set('n', '<leader>y', '<cmd>Telescope registers<CR>')
vim.keymap.set('n', 'gd', '<cmd>Telescope lsp_definitions<CR>')
vim.keymap.set('n', 'gr', '<cmd>Telescope lsp_references<CR>')
vim.keymap.set('n', 'gi', '<cmd>Telescope lsp_implementations<CR>')
vim.keymap.set('n', 'gx', '<cmd>Telescope diagnostics<CR>')
vim.keymap.set('n', '<leader>e', '<cmd>Telescope file_browser<CR>')
local fb_actions = require 'telescope'.extensions.file_browser.actions
local previewers = require('telescope.previewers')
local Job = require('plenary.job')
local new_maker = function(filepath, bufnr, opts)
filepath = vim.fn.expand(filepath)
Job:new({
command = 'file',
args = { '--mime-type', '-b', filepath },
on_exit = function(j)
local mime_type = vim.split(j:result()[1], '/')[1]
if mime_type == 'text' then
previewers.buffer_previewer_maker(filepath, bufnr, opts)
else
vim.schedule(function()
vim.api.nvim_buf_set_lines(bufnr, 0, -1, false, { 'BINARY' })
end)
end
end
}):sync()
end
--LSP
local on_attach = function(client, bufnr)
client.server_capabilities.documentFormattingProvider = false
local set = vim.keymap.set
set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>')
set('n', 'ls', '<cmd>lua vim.lsp.buf.signature_help()<CR>')
set('n', 'ln', '<cmd>lua vim.lsp.buf.rename()<CR>')
set('n', 'la', '<cmd>lua vim.lsp.buf.code_action()<CR>')
set('n', 'l[', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>')
set('n', 'l]', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>')
set('n', 'lf', '<cmd>lua vim.lsp.buf.format {async = true}<CR>')
end
vim.lsp.handlers['textDocument/publishDiagnostics'] = vim.lsp.with(
vim.lsp.diagnostic.on_publish_diagnostics, { virtual_text = false })
require('mason').setup()
require('mason-lspconfig').setup()
require('mason-lspconfig').setup_handlers {
function(server_name)
require('lspconfig')[server_name].setup {
on_attach = on_attach,
capabilities = capabilities,
}
end
}
--DAP
local function map(mode, lhs, rhs, opts)
local options = {noremap = true}
if opts then options = vim.tbl_extend('force', options, opts) end
vim.api.nvim_set_keymap(mode, lhs, rhs, options)
end
map("n", "<leader>5", ":lua require'dap'.continue()<CR>", { silent = true})
map("n", "<leader>6", ":lua require'dap'.step_over()<CR>", { silent = true})
map("n", "<leader>7", ":lua require'dap'.step_into()<CR>", { silent = true})
map("n", "<leader>8", ":lua require'dap'.step_out()<CR>", { silent = true})
map("n", "<leader>b", ":lua require'dap'.toggle_breakpoint()<CR>", { silent = true})
map("n", "<leader>c", ":lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>", { silent = true})
map("n", "<leader>i", ":lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>", { silent = true})
map("n", "<leader>d", ":lua require'dapui'.toggle()<CR>", { silent = true})
map("n", "<leader><leader>d", ":lua require'dapui'.eval()<CR>", { silent = true})
---DAP-UI
require("dapui").setup({
icons = { expanded = "", collapsed = "", current_frame = "" },
mappings = {
-- Use a table to apply multiple mappings
expand = { "<CR>", "<2-LeftMouse>" },
open = "o",
remove = "d",
edit = "e",
repl = "r",
toggle = "t",
},
expand_lines = vim.fn.has("nvim-0.7") == 1,
layouts = {
{
elements = {
-- Elements can be strings or table with id and size keys.
{ id = "scopes", size = 0.25 },
"breakpoints",
"stacks",
"watches",
},
size = 40, -- 40 columns
position = "left",
},
{
elements = {
"repl",
},
size = 0.25, -- 25% of total lines
position = "bottom",
},
},
controls = {
-- Requires Neovim nightly (or 0.8 when released)
enabled = true,
-- Display controls in this element
element = "repl",
icons = {
pause = "",
play = "",
step_into = "",
step_over = "",
step_out = "",
step_back = "",
run_last = "",
terminate = "",
},
},
floating = {
max_height = nil, -- These can be integers or a float between 0 and 1.
max_width = nil, -- Floats will be treated as percentage of your screen.
border = "single", -- Border style. Can be "single", "double" or "rounded"
mappings = {
close = { "q", "<Esc>" },
},
},
windows = { indent = 1 },
render = {
max_type_length = nil, -- Can be integer or nil.
max_value_lines = 100, -- Can be integer or nil.
}
})
--nvim-cmp
local cmp = require('cmp')
local lspkind = require('lspkind')
cmp.setup({
snippet = {
expand = function(args)
vim.fn['vsnip#anonymous'](args.body)
end
},
window = {
completion = cmp.config.window.bordered({
border = 'single'
}),
documentation = cmp.config.window.bordered({
border = 'single'
}),
},
mapping = cmp.mapping.preset.insert({
['<Tab>'] = cmp.mapping.select_next_item(),
['<S-Tab>'] = cmp.mapping.select_prev_item(),
['<C-b>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.abort(),
['<CR>'] = cmp.mapping.confirm({ select = true }),
}),
formatting = {
format = lspkind.cmp_format({
mode = 'symbol',
maxwidth = 50,
ellipsis_char = '...',
})
},
sources = cmp.config.sources({
{ name = 'nvim_lsp' },
{ name = 'vsnip' },
{ name = 'nvim_lsp_signature_help' },
{ name = 'calc' },
}, {
{ name = 'buffer', keyword_length = 2 },
})
})
cmp.setup.cmdline({ '/', '?' }, {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'nvim_lsp_document_symbol' }
}, {
{ name = 'buffer' }
})
})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{ name = 'path' }
}, {
{ name = 'cmdline', keyword_length = 2 }
})
})
local capabilities = require('cmp_nvim_lsp').default_capabilities()
vim.cmd('let g:vsnip_filetypes = {}')
--nvim-treesitter
require'nvim-treesitter.configs'.setup {
highlight = {
enable = true,
disable = {'help', 'markdown', 'toml'},
},
refactor = {
highlight_defintions = {
enable = true,
},
},
yati = {
enable = true,
},
matchup = {
enable = true,
enable_quotes = true,
},
ensure_installed = 'all'
}
--dressing
require('dressing').setup({
input = {
border = 'single',
},
builtin = {
border = 'single',
},
})
--indent_blankline
require('indent_blankline').setup {
show_end_of_line = true,
}
--modes
require('modes').setup({
colors = {
copy = '#FFEE55',
delete = '#DC669B',
insert = '#55AAEE',
visual = '#DD5522',
},
})
--nvim-hlslens
require('hlslens').setup()
local kopts = {noremap = true, silent = true}
vim.keymap.set('n', 'n',
[[<Cmd>execute('normal! ' . v:count1 . 'n')<CR><Cmd>lua require('hlslens').start()<CR>]],
kopts)
vim.keymap.set('n', 'N',
[[<Cmd>execute('normal! ' . v:count1 . 'N')<CR><Cmd>lua require('hlslens').start()<CR>]],
kopts)
vim.keymap.set('n', '*', [[*<cmd>lua require('hlslens').start()<CR>]], kopts)
vim.keymap.set('n', '#', [[#<cmd>lua require('hlslens').start()<CR>]], kopts)
vim.keymap.set('n', 'g*', [[g*<cmd>lua require('hlslens').start()<CR>]], kopts)
vim.keymap.set('n', 'g#', [[g#<cmd>lua require('hlslens').start()<CR>]], kopts)
vim.keymap.set('n', '<ESC>', ':nohl<CR><ESC>', kopts)
--fuzzy-motion
vim.keymap.set('n', 'S', '<cmd>FuzzyMotion<CR>')
vim.cmd("let g:fuzzy_motion_matchers = ['kensaku', 'fzf']")
--kensaku-search
vim.keymap.set('c', '<CR>', '<Plug>(kensaku-search-replace)<CR>')
--clever-f
vim.cmd('let g:clever_f_across_no_line = 1')
vim.cmd('let g:clever_f_ignore_case = 1')
vim.cmd('let g:clever_f_smart_case = 1')
vim.cmd("let g:clever_f_chars_match_any_signs = ';'")
vim.cmd('let g:clever_f_use_migemo = 1')
--mini.surround
require('mini.surround').setup({
mappings = {
highlight = 'sx',
},
custom_surroundings = {
['{'] = {
input = { '%b{}', '^.().*().$' },
output = { left = '{', right = '}' },
},
['}'] = {
input = { '%b{}', '^.%{().*()%}.$' },
output = { left = '{{', right = '}}' },
},
['('] = {
input = { '%b()', '^.().*().$' },
output = { left = '(', right = ')' },
},
[')'] = {
input = { '%b()', '^.%(().*()%).$' },
output = { left = '((', right = '))' },
},
['['] = {
input = { '%b[]', '^.().*().$' },
output = { left = '[', right = ']' },
},
[']'] = {
input = { '%b[]', '^.%[().*()%].$' },
output = { left = '[[', right = ']]' },
},
['<'] = {
input = { '%b<>', '^.().*().$' },
output = { left = '<', right = '>' },
},
['>'] = {
input = { '%b[]', '^.<().*()>.$' },
output = { left = '<<', right = '>>' },
},
['j'] = {
input = function()
local ok, val = pcall(vim.fn.getchar)
if not ok then return end
local char = vim.fn.nr2char(val)
local dict = {
['('] = { '().-()' },
['{'] = { '().-()' },
['['] = { '「().-()」' },
[']'] = { '『().-()』' },
['<'] = { '().-()' },
['"'] = { '”().-()”' },
}
if char == 'b' then
local ret = {}
for _, v in pairs(dict) do table.insert(ret, v) end
return { ret }
end
if dict[char] then return dict[char] end
error('%s is unsupported surroundings in Japanese')
end,
output = function()
local ok, val = pcall(vim.fn.getchar)
if not ok then return end
local char = vim.fn.nr2char(val)
local dict = {
['('] = { left = '', right = '' },
['{'] = { left = '', right = '' },
['['] = { left = '', right = '' },
[']'] = { left = '', right = '' },
['<'] = { left = '', right = '' },
['"'] = { left = '', right = '' },
}
if not dict[char] then error('%s is unsupported surroundings in Japanese') end
return dict[char]
end
}
},
})
--mini.ai
require('mini.ai').setup({
custom_textobjects = {
['{'] = { '%b{}', '^.().*().$' },
['}'] = { '%b{}', '^.%{().*()%}.$' },
['('] = { '%b()', '^.().*().$' },
[')'] = { '%b()', '^.%(().*()%).$' },
['['] = { '%b[]', '^.().*().$' },
[']'] = { '%b[]', '^.%[().*()%].$' },
[''] = { '%b<', '^.().*().$' },
['>'] = { '%b', '^.().*().$' },
['j'] = function()
local ok, val = pcall(vim.fn.getchar)
if not ok then return end
local char = vim.fn.nr2char(val)
local dict = {
['('] = { '().-()' },
['{'] = { '().-()' },
['['] = { '「().-()」' },
[']'] = { '『().-()』' },
['<'] = { '().-()' },
['"'] = { '”().-()”' },
}
if char == 'b' then
local ret = {}
for _, v in pairs(dict) do table.insert(ret, v) end
return { ret }
end
if dict[char] then return dict[char] end
error('%s is unsupported textobjects in Japanese')
end
}
})
--rainbow
vim.cmd('let g:rainbow_active = 1')
vim.cmd("let g:indent_guides_exclude_filetypes = ['help']")
--dial
vim.keymap.set('n', '<C-a>', require('dial.map').inc_normal(), {noremap = true})
vim.keymap.set('n', '<C-x>', require('dial.map').dec_normal(), {noremap = true})
vim.keymap.set('v', '<C-a>', require('dial.map').inc_visual(), {noremap = true})
vim.keymap.set('v', '<C-x>', require('dial.map').dec_visual(), {noremap = true})
vim.keymap.set('v', 'g<C-a>', require('dial.map').inc_gvisual(), {noremap = true})
vim.keymap.set('v', 'g<C-x>', require('dial.map').dec_gvisual(), {noremap = true})
--gin
vim.keymap.set('n', '<leader>gs', ':<C-u>GitStatus<CR>', {silent = true})
vim.keymap.set('n', '<leader>ga', ':<C-u>Gin add .<CR>', {silent = true})
vim.keymap.set('n', '<leader>gc', ":<C-u>Gin commit -m ''<Left>")
vim.keymap.set('n', '<leader>gp', ':<C-u>Gin push<CR>')
--OTHER SETTINGS
vim.cmd('colorscheme edge')

49
laptop/.Xresources Normal file
View file

@ -0,0 +1,49 @@
!! Import colorscheme
#define S_foreground #cacacc
#define S_background #1C1E27
#define S_black #3C3E47
#define S_red #E4436F
#define S_green #24e39d
#define S_yellow #EDA685
#define S_blue #2095B4
#define S_magenta #B367CF
#define S_cyan #00A5AF
#define S_lightgrey #b5b5ba
#define S_darkgrey #6C6F93
#define S_darkred #D95882
#define S_darkgreen #68DDC4
#define S_darkyellow #E8AEAA
#define S_darkblue #64A4BF
#define S_darkmagenta #B382CF
#define S_darkcyan #54AEB8
#define S_white #cacacc
!! Set colors
*background: S_background
*foreground: S_foreground
*color0: S_black
*color8: S_darkgrey
*color1: S_darkred
*color9: S_red
*color2: S_darkgreen
*color10: S_green
*color3: S_darkyellow
*color11: S_yellow
*color4: S_darkblue
*color12: S_blue
*color5: S_darkmagenta
*color13: S_magenta
*color6: S_darkcyan
*color14: S_cyan
*color7: S_lightgrey
*color15: S_white
!! Set DPI
Xft.dpi: 160
Xft.auohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.antialias: 1
Xft.rgba: rgb
Xcursor.size: 16

80
laptop/.alacritty.yml Normal file
View file

@ -0,0 +1,80 @@
# シェル
shell:
program: /usr/bin/zsh
args:
- --login
# カーソル
cursor:
style:
shape: Underline
blinking: Always
unfocused_hollow: false
blink_interval: 470
# タブスペース
tabspaces: 4
# ウインドウ
window:
opacity: 0.95
padding:
x: 0
y: 0
dynamic_padding: false
# フォント
font:
size: 20
normal:
family: 'UDEV Gothic 35NFLG'
style: Regular
bold:
family: 'UDEV Gothic 35NFLG'
style: Bold
italic:
family: 'UDEV Gothic 35NFLG'
style: Italic
bold_italic:
family: 'UDEV Gothic 35NFLG'
style: Bold Italic
# 環境変数
env:
WINIT_X11_SCALE_FACTOR: '1.0'
TERM: alacritty
# Colors (Horizon Dark)
colors:
# Primary colors
primary:
background: '0x1c1e26'
foreground: '0xe0e0e0'
# Cursor
cursor:
cursor: '0x00ff00'
vi_mode_cursor:
cursor: '0x00ff00'
# Normal colors
normal:
black: '0x16161c'
red: '0xe95678'
green: '0x29d398'
yellow: '0xfab795'
blue: '0x26bbd9'
magenta: '0xee64ac'
cyan: '0x59e1e3'
white: '0xd5d8da'
# Bright colors
bright:
black: '0x5b5858'
red: '0xec6a88'
green: '0x3fdaa4'
yellow: '0xfbc3a7'
blue: '0x3fc4de'
magenta: '0xf075b5'
cyan: '0x6be4e6'
white: '0xd5d8da'

8
laptop/.xintrc Normal file
View file

@ -0,0 +1,8 @@
export LANG="ja_JP.UTF-8"
export XMODIFIERS="@im=fcitx"
export XMODIFIER="@im=fcitx"
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export DefaultIMModule=fcitx
exec i3
xrdb -merge ~/.Xresources

6
laptop/10-capslock.conf Normal file
View file

@ -0,0 +1,6 @@
Section "InputClass"
Identifier "keyboard Setting"
MatchIsKeyboard "yes"
Option "XkbOptions" "ctrl:nocaps"
Option "XkbOptions" "ctrl:swapcaps"
EndSection

9
laptop/90-touchpad.conf Normal file
View file

@ -0,0 +1,9 @@
Section "InputClass"
Identifier "touchpad"
MatchIsTouchpad "on"
Driver "libinput"
Option "Tapping" "on"
Option "ScrollMethod" "twofinger"
Option "AccelProfile" "adaptive"
EndSection

165
laptop/colors-rofi.rasi Normal file
View file

@ -0,0 +1,165 @@
* {
active-background: #68DDC4;
active-foreground: @foreground;
normal-background: @background;
normal-foreground: @foreground;
urgent-background: #D95882;
urgent-foreground: @foreground;
alternate-active-background: @background;
alternate-active-foreground: @foreground;
alternate-normal-background: @background;
alternate-normal-foreground: @foreground;
alternate-urgent-background: @background;
alternate-urgent-foreground: @foreground;
selected-active-background: #D95882;
selected-active-foreground: @foreground;
selected-normal-background: #f08080;
selected-normal-foreground: @background;
selected-urgent-background: #D95882;
selected-urgent-foreground: @foreground;
background-color: @background;
background: #1C1E27;
foreground: #cacacc;
border-color: #E8AEAA;
spacing: 4;
}
#window {
background-color: @background;
border: 2px;
padding: 2ch;
width: 500px;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 2px 0px 0px;
border-color: @border-color;
padding: 1px;
}
#textbox {
text-color: @foreground;
}
#inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#textbox-prompt-colon {
expand: false;
str: "";
margin: 0px 0.3em 0em 0em;
text-color: @normal-foreground;
}
#listview {
fixed-height: 0;
border: 2px 0px 0px;
border-color: @border-color;
spacing: 0px;
scrollbar: false;
padding: 6px 0px 0px;
lines: 4;
}
#element {
border: 0;
padding: 8px;
}
#element.normal.normal {
background-color: @normal-background;
text-color: @normal-foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @active-foreground;
}
#element.selected.normal {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @selected-urgent-foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @selected-active-foreground;
}
#element.alternate.normal {
background-color: @alternate-normal-background;
text-color: @alternate-normal-foreground;
}
#element.alternate.urgent {
background-color: @alternate-urgent-background;
text-color: @alternate-urgent-foreground;
}
#element.alternate.active {
background-color: @alternate-active-background;
text-color: @alternate-active-foreground;
}
#scrollbar {
width: 4px;
border: 0;
handle-width: 8px;
padding: 0;
}
#sidebar {
border: 2px 0px 0px;
border-color: @border-color;
}
#button {
text-color: @normal-foreground;
}
#button.selected {
background-color: @selected-normal-background;
text-color: @selected-normal-foreground;
}
#inputbar {
spacing: 0;
text-color: @normal-foreground;
padding: 1px;
}
#case-indicator {
spacing: 0;
text-color: @normal-foreground;
}
#entry {
spacing: 0;
text-color: @normal-foreground;
}
#prompt {
spacing: 1;
margin: 0px 0px 4px 0em;
text-color: @normal-foreground;
}

264
laptop/config Normal file
View file

@ -0,0 +1,264 @@
# 神は言った――「光あれ」
set $mod Mod4
# ウインドウタイトルのフォント
font pango:Noto Sans CJK JP 8
# フローティングウインドウの操作キー
floating_modifier $mod
# ターミナル
bindsym $mod+Return exec --no-startup-id alacritty
# ファイラー
bindsym $mod+m exec --no-startup-id thunar
# タスクキル
bindsym $mod+q kill
# ランチャー
bindsym $mod+z exec --no-startup-id "rofi -show drun"
bindsym $mod+x exec --no-startup-id "rofi -show run"
# ウインドウフォーカス
bindsym $mod+h focus left
bindsym $mod+j focus down
bindsym $mod+k focus up
bindsym $mod+l focus right
# 代替ウインドウフォーカス
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
# ウインドウ交換
bindsym $mod+Shift+h move left
bindsym $mod+Shift+j move down
bindsym $mod+Shift+k move up
bindsym $mod+Shift+l move right
# 代替ウインドウ交換
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
# 水平ウインドウ分割
bindsym $mod+s split v
# 垂直ウインドウ分割
bindsym $mod+v split h
# フルスクリーン
bindsym $mod+f fullscreen toggle
# ウインドウの分割切り替え
bindsym $mod+e layout toggle split
# ウインドウフロート
bindsym $mod+w floating toggle
# フロートウインドウフォーカス
bindsym $mod+space focus mode_toggle
# 親コンテナへのフォーカス
bindsym $mod+a focus parent
# 子コンテナへのフォーカス
bindsym $mod+b focus child
# ワークスペース変数
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
# ワークスペースの移動
bindsym $mod+1 workspace $ws1
bindsym $mod+2 workspace $ws2
bindsym $mod+3 workspace $ws3
bindsym $mod+4 workspace $ws4
bindsym $mod+5 workspace $ws5
bindsym $mod+6 workspace $ws6
bindsym $mod+7 workspace $ws7
bindsym $mod+8 workspace $ws8
bindsym $mod+9 workspace $ws9
bindsym $mod+0 workspace $ws10
# ウインドウを他のワークスペースに移動する
bindsym $mod+Shift+1 move container to workspace $ws1
bindsym $mod+Shift+2 move container to workspace $ws2
bindsym $mod+Shift+3 move container to workspace $ws3
bindsym $mod+Shift+4 move container to workspace $ws4
bindsym $mod+Shift+5 move container to workspace $ws5
bindsym $mod+Shift+6 move container to workspace $ws6
bindsym $mod+Shift+7 move container to workspace $ws7
bindsym $mod+Shift+8 move container to workspace $ws8
bindsym $mod+Shift+9 move container to workspace $ws9
bindsym $mod+Shift+0 move container to workspace $ws10
# 設定の再読込み
bindsym $mod+Shift+c reload
# 再起動
bindsym $mod+Shift+r restart
# ウインドウリサイズ
mode "RESIZE" {
# リサイズキー
bindsym h resize shrink width 10 px or 5 ppt
bindsym j resize grow height 10 px or 5 ppt
bindsym k resize shrink height 10 px or 5 ppt
bindsym l resize grow width 10 px or 5 ppt
# 代替リサイズキー
bindsym Left resize shrink width 10 px or 5 ppt
bindsym Down resize grow height 10 px or 5 ppt
bindsym Up resize shrink height 10 px or 5 ppt
bindsym Right resize grow width 10 px or 5 ppt
# ノーマルモードへ遷移
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "RESIZE"
# コマンドモード――これによりキーバインドは実質無制限となる!
bindsym $mod+c mode "CMD"
mode "CMD"{
bindsym v exec vivaldi-stable; mode "default"
bindsym f exec "flameshot gui" mode "default"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+c mode "default"
}
# シャットダウンシークエンス
bindsym $mod+Shift+e mode "SHUTDOWN SEQUENCE"
mode "SHUTDOWN SEQUENCE"{
bindsym p exec "systemctl poweroff"
bindsym r exec "systemctl reboot"
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+Shift+e mode "default"
}
# ステータスバーの色
set $background #2B303B
set $foreground #C0C5CE
set $lightred #BF616A
set $lightgreen #A3BE8C
set $lightyellow #EBCB8B
set $lightblue #8FA1B3
set $lightmagenta #B48EAD
set $lightcyan #96B5B4
set $lightwhite #C0C5CE
set $pink #FFB6C1
set $orange #F08080
# ステータスバー関連
bar {
font pango:UDEV Gothic 35 11
mode dock
position top
workspace_buttons yes
strip_workspace_numbers yes
binding_mode_indicator yes
tray_padding 2
colors {
background $background
focused_background $background
statusline $lightred
focused_statusline $lightred
# 左からborder, bg, fg
focused_workspace $orange $orange $background
active_workspace $background $background $foreground
inactive_workspace $background $background $foreground
urgent_workspace $green $green $background
binding_mode $green $green $background
}
status_command /usr/bin/bumblebee-status -m playerctl pasink pasource datetime battery \
-p playerctl.hide="true" playerctl.format="{{artist}} - {{title}}" playerctl.layout="playerctl.song" datetime.format="%m/%d %H:%M" -t monotone
}
# i3wm全体の色
set $bg #1C1E27
set $fg #cacacc
set $darkred #D95882
set $red #E4436F
set $darkgreen #68DDC4
set $green #24e39d
set $darkyellow #E8AEAA
set $yellow #EDA685
set $darkblue #64A4BF
set $blue #2095B4
set $darkmagenta #B382CF
set $darkcyan #54AEB8
set $cyan #00A5AF
set $darkwhite #cacacc
set $white #cacaca
set $darkgrey #6C6F93
# フォーカスカラー
# class border background text indicator child_border
client.focused $bg $darkgrey $fg $yellow $darkyellow
client.unfocused $bg $bg $fg $yellow $bg
# ウインドウ枠の太さ
for_window [class="^.*"] border pixel 2
# gaps
gaps top 5
gaps bottom 5
gaps right 5
gaps left 5
gaps inner 5
# マウスでフォーカスしない
focus_follows_mouse no
# 音量調整
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5%
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5%
bindsym XF86AudioMute exec pactl set-sink-mute alsa_output.pci-0000_00_1f.3.analog-stereo toggle
bindsym XF86AudioMicMute exec pactl set-source-mute alsa_input.pci-0000_00_1f.3.analog-stereo toggle
# 輝度調整
bindsym XF86MonBrightnessUp exec light -A 10
bindsym XF86MonBrightnessDown exec light -U 10
# 自動起動
exec --no-startup-id dunst
exec --no-startup-id "picom -b --experimental-backends"
exec --no-startup-id xfce4-power-manager
exec --no-startup-id fcitx5
exec --no-startup-id light-locker --lock-on-suspend
exec --no-startup-id "feh --no-fehbg --bg-scale ~/Wallpaper.png"
exec --no-startup-id "xset r rate 200 30"
exec --no-startup-id "libinput-gestures-setup start"
# フローティング起動一覧
for_window [class="Bitwarden"] floating enable
for_window [class="Thunar"] floating enable
for_window [class="Lxappearance"] floating enable, resize set 800 600
for_window [class="Pavucontrol"] floating enable, resize set 800 600
for_window [class="feh"] floating enable, resize set 1280 1024
for_window [class="fcitx5-config-qt"] floating enable
for_window [class="mozc_tool"] floating enable, resize set 600 400
for_window [class="Blueman-manager"] floating enable, resize set 800 600
for_window [class="L3afpad"] floating enable, resize set 800 600
for_window [class="qt5ct"] floating enable, resize set 800 600
for_window [class="Qtconfig-qt4"] floating enable, resize set 800 600
# ワークスペース指定一覧
assign [class="discord"] workspace 3
assign [class="Slack"] workspace 4

5
laptop/config.rasi Normal file
View file

@ -0,0 +1,5 @@
configuration {
font: "Noto Sans CJK JP 19";
drun-display-format: "{name}";
}
@import "colors-rofi.rasi"

245
laptop/dunstrc Normal file
View file

@ -0,0 +1,245 @@
[global]
font = Noto Sans CJK JP 11
# Allow a small subset of html markup:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
# If markup is not allowed, those tags will be stripped out of the
# message.
markup = yes
plain_text = no
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# Markup is allowed
format = "<b>%s</b>\n%b"
# Sort messages by urgency.
sort = no
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# The frequency with wich text that is longer than the notification
# window allows bounces back and forth.
# This option conflicts with "word_wrap".
# Set to 0 to disable.
bounce_freq = 0
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = -1
# Split notifications into multiple lines if they don't fit into
# geometry.
word_wrap = yes
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Hide duplicate's count and stack them
stack_duplicates = yes
hide_duplicate_count = yes
width = 300
height = 100
offset = 10x35
# Shrink window if it's smaller than the width. Will be ignored if
# width is 0.
shrink = no
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing windowmanager is
# present (e.g. xcompmgr, compiz, etc.).
transparency = 5
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
idle_threshold = 0
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a windowmanager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern windowmanagers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = none
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 5
# Display indicators for URLs (U) and actions (A).
show_indicators = no
# The height of a single line. If the height is smaller than the
# font height, it will get raised to the font height.
# This adds empty space above and under the text.
line_height = 3
# Draw a line of "separatpr_height" pixel height between two
# notifications.
# Set to 0 to disable.
separator_height = 2
# Padding between text and separator.
padding = 6
# Horizontal padding.
horizontal_padding = 6
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Print a notification on startup.
# This is mainly for error detection, since dbus (re-)starts dunst
# automatically after a crash.
startup_notification = false
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/google-chrome-stable -new-tab
# Align icons left/right/off
icon_position = left
max_icon_size = 100
# Paths to default icons.
icon_path = /usr/share/icons/Qogir/symbolic/status
frame_width = 2
frame_color = "#a3be8c"
[shortcuts]
# Shortcuts are specified as [modifier+][modifier+]...key
# Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
# "mod3" and "mod4" (windows-key).
# Xev might be helpful to find names for keys.
# Close notification.
close = ctrl+space
# Close all notifications.
close_all = ctrl+shift+space
# Redisplay last message(s).
# On the US keyboard layout "grave" is normally above TAB and left
# of "1".
history = ctrl+grave
# Context menu.
context = ctrl+shift+period
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
frame_color = "#2b303b"
foreground = "#c0c5ce"
background = "#2b303b"
#background = "#2B313C"
timeout = 3
[urgency_normal]
frame_color = "#a3be8c"
foreground = "#c0c5ce"
background = "#2b303b"
#background = "#2B313C"
timeout = 3
[urgency_critical]
frame_color = "#f08080"
foreground = "#c0c5ce"
background = "#2b303b"
#background = "#2B313C"
timeout = 5
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
# Messages can be matched by "appname", "summary", "body", "icon", "category",
# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
# "background", "new_icon" and "format".
# Shell-like globbing will get expanded.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: if you don't want a notification to be displayed, set the format
# to "".
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# format = ""
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
# vim: ft=cfg

12
main.lua Normal file
View file

@ -0,0 +1,12 @@
local fcitx = require("fcitx")
fcitx.watchEvent(fcitx.EventType.KeyEvent, "handler")
function handler(sym, state, release)
if ((sym == 65307 and state == 0) or (sym == 91 and state == 4)) and
not release
then
fcitx.setCurrentInputMethod("keyboard-us")
end
return false
end

67
monotone.json Normal file
View file

@ -0,0 +1,67 @@
{
"icons": [ "awesome-fonts" ],
"colors": [{
"red": "#BF616A",
"orange": "#F08080",
"yellow": "#EBCB8B",
"green": "#A3BE8C"
}],
"defaults": {
"separator-block-width": 0,
"separator": "",
"warning": {
"fg": "#2B303B",
"bg": "#f08080"
},
"critical": {
"fg": "#2B303B",
"bg": "#BF616A"
}
},
"cycle": [
{ "fg": "#C0C5CE", "bg": "#2B303B"}
],
"dnf": {
"good": {
"fg": "#A3BE8C",
"bg": "#2B303B"
}
},
"apt": {
"good": {
"fg": "#A3BE8C",
"bg": "#2B303B"
}
},
"pacman": {
"good": {
"fg": "#A3BE8C",
"bg": "#2B303B"
}
},
"battery": {
"charged": {
"fg": "#2B303B",
"bg": "#A3BE8C"
},
"charging": {
"fg": "#2B303B",
"bg": "#A3BE8C"
}
},
"pomodoro": {
"paused": {
"fg": "#2B303B",
"bg": "#F08080"
},
"work": {
"fg": "#2B303B",
"bg": "#EBCB8B"
},
"break": {
"fg": "#A3BE8C",
"bg": "#2B303B"
}
}
}

425
picom.conf Normal file
View file

@ -0,0 +1,425 @@
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 9;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -7;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -7;
# Avoid drawing shadows on dock/panel windows. This option is deprecated,
# you should use the *wintypes* option in your config file instead.
#
# no-dock-shadow = false
# Don't draw shadows on drag-and-drop windows. This option is deprecated,
# you should use the *wintypes* option in your config file instead.
#
# no-dnd-shadow = false
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Do not paint shadows on shaped windows. Note shaped windows
# here means windows setting its shape through X Shape extension.
# Those using ARGB background is beyond our control.
# Deprecated, use
# shadow-exclude = 'bounding_shaped'
# or
# shadow-exclude = 'bounding_shaped && !rounded_corners'
# instead.
#
# shadow-ignore-shaped = ''
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"_GTK_FRAME_EXTENTS@:c"
];
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.15;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.15;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1;
# Default opacity for dropdown menus and popup menus. (0.0 - 1.0, defaults to 1.0)
# menu-opacity = 1.0
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should always be considered focused.
# focus-exclude = []
focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
# opacity-rule = []
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ''
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
backend = "glx";
#backend = "xrender";
# Enable/disable VSync.
# vsync = false
vsync = true
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Specify refresh rate of the screen. If not specified or 0, picom will
# try detecting this with X RandR extension.
#
#refresh-rate = 60
# Limit picom to repaint at most once every 1 / 'refresh_rate' second to
# boost performance. This should not be used with
# vsync drm/opengl/opengl-oml
# as they essentially does sw-opti's job already,
# unless you wish to specify a lower refresh rate than the actual value.
#
# sw-opti =
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
# detect-transient is enabled, too.
#
# detect-client-leader = false
detect-client-leader = true
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = true
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
# in the source tree for examples.
#
# glx-fshader-win = ''
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = '/path/to/your/log/file'
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = '/path/to/your/log/file'
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 1; focus = true; full-shadow = false; };
dock = { shadow = true}
dnd = { shadow = false; }
popup_menu = { opacity = 1; }
dropdown_menu = { opacity = 1; }
};

258
pipewire.conf Normal file
View file

@ -0,0 +1,258 @@
# Daemon config file for PipeWire version "0.3.59" #
#
# Copy and edit this file in /etc/pipewire for system-wide changes
# or in ~/.config/pipewire for local changes.
#
# It is also possible to place a file with an updated section in
# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
# ~/.config/pipewire/pipewire.conf.d/ for local changes.
#
context.properties = {
## Configure properties in the system.
#library.name.system = support/libspa-support
#context.data-loop.library.name.system = support/libspa-support
#support.dbus = true
#link.max-buffers = 64
link.max-buffers = 16 # version < 3 clients can't handle more
#mem.warn-mlock = false
#mem.allow-mlock = true
#mem.mlock-all = false
#clock.power-of-two-quantum = true
#log.level = 2
#cpu.zero.denormals = false
core.daemon = true # listening for socket connections
core.name = pipewire-0 # core name and socket name
## Properties for the DSP configuration.
default.clock.rate = 44100
#default.clock.allowed-rates = [ 48000 ]
default.clock.quantum = 4096
default.clock.min-quantum = 16
#default.clock.max-quantum = 2048
#default.clock.quantum-limit = 8192
#default.video.width = 640
#default.video.height = 480
#default.video.rate.num = 25
#default.video.rate.denom = 1
#
#settings.check-quantum = false
#settings.check-rate = false
#
# These overrides are only applied when running in a vm.
vm.overrides = {
default.clock.min-quantum = 1024
}
}
context.spa-libs = {
#<factory-name regex> = <library-name>
#
# Used to find spa factory names. It maps an spa factory name
# regular expression to a library name that should contain
# that factory.
#
audio.convert.* = audioconvert/libspa-audioconvert
avb.* = avb/libspa-avb
api.alsa.* = alsa/libspa-alsa
api.v4l2.* = v4l2/libspa-v4l2
api.libcamera.* = libcamera/libspa-libcamera
api.bluez5.* = bluez5/libspa-bluez5
api.vulkan.* = vulkan/libspa-vulkan
api.jack.* = jack/libspa-jack
support.* = support/libspa-support
#videotestsrc = videotestsrc/libspa-videotestsrc
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
}
context.modules = [
#{ name = <module-name>
# [ args = { <key> = <value> ... } ]
# [ flags = [ [ ifexists ] [ nofail ] ]
#}
#
# Loads a module with the given parameters.
# If ifexists is given, the module is ignored when it is not found.
# If nofail is given, module initialization failures are ignored.
#
# Uses realtime scheduling to boost the audio thread priorities. This uses
# RTKit if the user doesn't have permission to use regular realtime
# scheduling.
{ name = libpipewire-module-rt
args = {
nice.level = -11
#rt.prio = 88
#rt.time.soft = -1
#rt.time.hard = -1
}
flags = [ ifexists nofail ]
}
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# The profile module. Allows application to access profiler
# and performance data. It provides an interface that is used
# by pw-top and pw-profiler.
{ name = libpipewire-module-profiler }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Creates a factory for making devices that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-device-factory }
# Creates a factory for making nodes that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-node-factory }
# Allows creating nodes that run in the context of the
# client. Is used by all clients that want to provide
# data to PipeWire.
{ name = libpipewire-module-client-node }
# Allows creating devices that run in the context of the
# client. Is used by the session manager.
{ name = libpipewire-module-client-device }
# The portal module monitors the PID of the portal process
# and tags connections with the same PID as portal
# connections.
{ name = libpipewire-module-portal
flags = [ ifexists nofail ]
}
# The access module can perform access checks and block
# new clients.
{ name = libpipewire-module-access
args = {
# access.allowed to list an array of paths of allowed
# apps.
#access.allowed = [
# /usr/bin/pipewire-media-session
#]
# An array of rejected paths.
#access.rejected = [ ]
# An array of paths with restricted access.
#access.restricted = [ ]
# Anything not in the above lists gets assigned the
# access.force permission.
#access.force = flatpak
}
}
# Makes a factory for wrapping nodes in an adapter with a
# converter and resampler.
{ name = libpipewire-module-adapter }
# Makes a factory for creating links between ports.
{ name = libpipewire-module-link-factory }
# Provides factories to make session manager objects.
{ name = libpipewire-module-session-manager }
# Use libcanberra to play X11 Bell
#{ name = libpipewire-module-x11-bell
# args = {
# #sink.name = ""
# #sample.name = "bell-window-system"
# #x11.display = null
# #x11.xauthority = null
# }
#}
]
context.objects = [
#{ factory = <factory-name>
# [ args = { <key> = <value> ... } ]
# [ flags = [ [ nofail ] ]
#}
#
# Creates an object from a PipeWire factory with the given parameters.
# If nofail is given, errors are ignored (and no object is created).
#
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc Spa:Pod:Object:Param:Props:patternType = 1 } }
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test } }
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
# A default dummy driver. This handles nodes marked with the "node.always-driver"
# property when no other driver is currently active. JACK clients need this.
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Dummy-Driver
node.group = pipewire.dummy
priority.driver = 20000
}
}
{ factory = spa-node-factory
args = {
factory.name = support.node.driver
node.name = Freewheel-Driver
priority.driver = 19000
node.group = pipewire.freewheel
node.freewheel = true
}
}
# This creates a new Source node. It will have input ports
# that you can link, to provide audio for this source.
#{ factory = adapter
# args = {
# factory.name = support.null-audio-sink
# node.name = "my-mic"
# node.description = "Microphone"
# media.class = "Audio/Source/Virtual"
# audio.position = "FL,FR"
# }
#}
# This creates a single PCM source device for the given
# alsa device path hw:0. You can change source to sink
# to make a sink in the same way.
#{ factory = adapter
# args = {
# factory.name = api.alsa.pcm.source
# node.name = "alsa-source"
# node.description = "PCM Source"
# media.class = "Audio/Source"
# api.alsa.path = "hw:0"
# api.alsa.period-size = 1024
# api.alsa.headroom = 0
# api.alsa.disable-mmap = false
# api.alsa.disable-batch = false
# audio.format = "S16LE"
# audio.rate = 48000
# audio.channels = 2
# audio.position = "FL,FR"
# }
#}
]
context.exec = [
#{ path = <program-name> [ args = "<arguments>" ] }
#
# Execute the given program with arguments.
#
# You can optionally start the session manager here,
# but it is better to start it as a systemd service.
# Run the session manager with -h for options.
#
#{ path = "/usr/bin/pipewire-media-session" args = "" }
#
# You can optionally start the pulseaudio-server here as well
# but it is better to start it as a systemd service.
# It can be interesting to start another daemon here that listens
# on another address with the -a option (eg. -a tcp:4713).
#
#{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
]