feat(desktop): align terminal workflow with ember oled

This commit is contained in:
2026-07-21 15:17:05 +02:00
parent 53ed911c70
commit f04bde4ec5
4 changed files with 152 additions and 284 deletions
+4 -4
View File
@@ -33,10 +33,10 @@
"interval": 1, "interval": 1,
"tooltip-format": "\n<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>", "tooltip-format": "\n<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"calendar-weeks-pos": "right", "calendar-weeks-pos": "right",
"today-format": "<span color='#7645AD'><b><u>{}</u></b></span>", "today-format": "<span color='#ff8800'><b><u>{}</u></b></span>",
"format-calendar": "<span color='#aeaeae'><b>{}</b></span>", "format-calendar": "<span color='#f4c7a1'><b>{}</b></span>",
"format-calendar-weeks": "<span color='#aeaeae'><b>W{:%V}</b></span>", "format-calendar-weeks": "<span color='#f4c7a1'><b>W{:%V}</b></span>",
"format-calendar-weekdays": "<span color='#aeaeae'><b>{}</b></span>" "format-calendar-weekdays": "<span color='#f4c7a1'><b>{}</b></span>"
}, },
"disk": { "disk": {
+40 -39
View File
@@ -1,22 +1,14 @@
/* Noctalia Ember OLED: near-black surfaces, warm amber focus. */
* { * {
font-family: "JetBrainsMono Nerd Font,JetBrainsMono NF" ; font-family: "JetBrainsMono Nerd Font,JetBrainsMono NF";
color: white; color: #fff1e6;
}
window#waybar {
background: black;
}
.modules-right {
background: #000000;
}
.modules-center {
background: #000000;
} }
window#waybar,
.modules-right,
.modules-center,
.modules-left { .modules-left {
background: #000000; background: #050403;
} }
#battery, #battery,
@@ -38,50 +30,59 @@ window#waybar {
#window, #window,
#workspaces, #workspaces,
#clock { #clock {
min-width: 1ex; min-width: 1ex;
padding-right: 5px; padding-right: 5px;
} }
#tray menu * { #tray menu * {
color: black; color: #050403;
}
#cpu {
/* "100% " fits in this box; fixed width prevents sibling modules shifting. */
min-width: 7ch;
max-width: 7ch;
text-align: right;
} }
#temperature.critical, #temperature.critical,
#pulseaudio { #pulseaudio {
min-width: 5ex; min-width: 5ex;
}
#pulseaudio.muted {
color: #FF0000;
}
#pulseaudio.mic.muted {
color: #ffffff;
} }
#pulseaudio.muted,
#pulseaudio.mic:not(.source-muted) { #pulseaudio.mic:not(.source-muted) {
color: #fc0202; color: #ff6b4a;
} }
#clock{
color: #f9780e; #pulseaudio.mic.muted {
color: #6e4a31;
}
#clock {
color: #ff8800;
} }
#battery.charging { #battery.charging {
color: #ffffff; color: #1a0d00;
background-color: #26A65B; background-color: #c98a45;
} }
#battery.warning:not(.charging) { #battery.warning:not(.charging) {
background-color: #ffbe61; background-color: #ffb05c;
color: black; color: #2b1600;
} }
#battery.critical:not(.charging) { #battery.critical:not(.charging) {
background-color: #f53c3c; background-color: #ff6b4a;
color: #ffffff; color: #2b0700;
animation-name: blink; animation-name: blink;
animation-duration: 0.5s; animation-duration: 0.5s;
animation-timing-function: linear; animation-timing-function: linear;
animation-iteration-count: infinite; animation-iteration-count: infinite;
animation-direction: alternate; animation-direction: alternate;
} }
#network.speed { #network.speed {
min-width: 30ex; min-width: 30ex;
} }
+101 -173
View File
@@ -1,186 +1,114 @@
# -- general ------------------------------------------------------------------- # ~/.tmux.conf — Vim-centric tmux configuration (tmux 3.7+)
# Reload with: prefix + r
set -g extended-keys on # --- Terminal and responsiveness ---------------------------------------------
set -g default-terminal "tmux-256color"
set -g default-terminal "screen-256color" # colors! set -as terminal-features ",xterm-256color:RGB,screen-256color:RGB,tmux-256color:RGB"
setw -g xterm-keys on set -sg escape-time 10
set -s escape-time 10 # faster command sequences set -sg repeat-time 600
set -sg repeat-time 600 # increase repeat timeout
set -s focus-events on set -s focus-events on
set -g allow-passthrough on
set -g history-limit 100000
set -g set-clipboard on
set -g prefix2 C-a # GNU-Screen compatible prefix # --- Prefix and defaults ------------------------------------------------------
bind C-a send-prefix -2 unbind C-b
set -g prefix C-a
bind C-a send-prefix
set -q -g status-utf8 on # expect UTF-8 (tmux < 2.2) setw -g mode-keys vi
set -q -g utf8 on set -g status-keys vi
set -g mouse on
set -g base-index 1
setw -g pane-base-index 1
set -g renumber-windows on
set -g detach-on-destroy off
set -g display-panes-time 800
set -g display-time 1500
set -g history-limit 5000 # boost history # --- Reload and editing -------------------------------------------------------
bind r source-file ~/.tmux.conf \; display-message "tmux config reloaded"
bind e new-window -n tmux.conf "exec \${EDITOR:-nvim} ~/.tmux.conf"
# edit configuration # --- Vim-style panes ----------------------------------------------------------
bind e new-window -n "~/.tmux.conf.local" "sh -c '\${EDITOR:-vim} ~/.tmux.conf.local && tmux source ~/.tmux.conf && tmux display \"~/.tmux.conf sourced\"'" # Keep the familiar split keys and always inherit the active pane's directory.
bind - split-window -v -c "#{pane_current_path}"
bind | split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
# reload configuration bind -r h select-pane -L
bind r source-file ~/.tmux.conf \; display '~/.tmux.conf sourced' bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5
bind -r \{ swap-pane -U
bind -r \} swap-pane -D
bind z resize-pane -Z
bind x confirm-before -p "kill pane #P? (y/n)" kill-pane
# run the powerline daemon # --- Windows, sessions, and buffers ------------------------------------------
run-shell "powerline-daemon -q" bind -r n next-window
# source powerline tmux bindings bind -r p previous-window
source "/usr/lib/python3.14/site-packages/powerline/bindings/tmux/powerline.conf" bind Tab last-window
bind w choose-tree -Zw
bind s choose-tree -Zs
bind f command-prompt -p "switch to session:" "switch-client -t '%%'"
bind [ choose-buffer
bind ] paste-buffer
bind C-l send-keys C-l \; clear-history
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard' # --- Copy mode ----------------------------------------------------------------
bind Enter copy-mode
bind -T copy-mode-vi v send -X begin-selection
bind -T copy-mode-vi C-v send -X rectangle-toggle
bind -T copy-mode-vi y send -X copy-selection-and-cancel
bind -T copy-mode-vi Escape send -X cancel
bind -T copy-mode-vi q send -X cancel
bind -T copy-mode-vi H send -X start-of-line
bind -T copy-mode-vi L send -X end-of-line
bind -T copy-mode-vi C-u send -X halfpage-up
bind -T copy-mode-vi C-d send -X halfpage-down
# Prevent random characters from appearing during yank # Prefer a native Wayland clipboard; use xclip elsewhere. set-clipboard keeps
set -s set-clipboard off # OSC 52-capable terminals in sync as well.
if-shell 'command -v wl-copy >/dev/null 2>&1' 'bind -T copy-mode-vi y send -X copy-pipe-and-cancel "wl-copy"' 'bind -T copy-mode-vi y send -X copy-pipe-and-cancel "xclip -in -selection clipboard"'
# -- display ------------------------------------------------------------------- # --- Status line --------------------------------------------------------------
set -g status on
set -g status-position bottom
set -g status-interval 5
set -g status-justify left
set -g status-left-length 40
set -g status-right-length 100
# Noctalia "Ember OLED" palette: deep near-black with restrained amber focus.
set -g status-style "bg=#050403,fg=#fff1e6"
set -g message-style "bg=#ff8800,fg=#1a0d00"
set -g message-command-style "bg=#ff8800,fg=#1a0d00"
set -g pane-border-style "fg=#6e4a31"
set -g pane-active-border-style "fg=#ff8800"
set -g mode-style "bg=#ffb05c,fg=#2b1600"
# The left segment switches to a large amber cue while tmux waits for the
# key following C-a, so prefix mode is visible rather than implicit.
# Keep each style attribute in its own sequence: conditional-format commas then
# cannot be mistaken for part of a #[fg=…,bg=…] style specification.
set -g status-left "#{?client_prefix,#[bg=#ffb05c]#[fg=#2b1600]#[bold] C-a COMMAND ,#[bg=#ff8800]#[fg=#1a0d00]#[bold] #S }#[bg=#050403]#[fg=#ff8800]"
set -g status-right "#[fg=#f4c7a1]#(whoami)@#H #[fg=#ff8800]| #[fg=#fff1e6]%Y-%m-%d %H:%M "
setw -g window-status-format " #[fg=#f4c7a1]#I:#W "
setw -g window-status-current-format "#[bg=#1a110c,fg=#fff1e6,bold] #I:#W "
set -g base-index 1 # start windows numbering at 1 # --- Optional TPM plugins -----------------------------------------------------
setw -g pane-base-index 1 # make pane numbering consistent with windows # Install TPM once: git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
# Then reload and press prefix + I to install these plugins.
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @resurrect-capture-pane-contents 'on'
set -g @continuum-restore 'on'
if-shell '[ -f ~/.tmux/plugins/tpm/tpm ]' 'run ~/.tmux/plugins/tpm/tpm'
#setw -g automatic-rename on # rename window to reflect current program # Keep machine-specific bindings and experiments out of this tracked base file.
set -g renumber-windows on # renumber windows when a window is closed if-shell '[ -f ~/.tmux.conf.local ]' 'source-file ~/.tmux.conf.local'
#set -g set-titles on # set terminal title
set -g display-panes-time 800 # slightly longer pane indicators display time
set -g display-time 1000 # slightly longer status messages display time
set-option -g status on
set-option -g status-interval 2
set-option -g status-justify "centre"
set-option -g status-left-length 60
set-option -g status-right-length 90
# clear both screen and history
bind -n C-l send-keys C-l \; run 'sleep 0.1' \; clear-history
# activity
set -g monitor-activity on
set -g visual-activity off
# set border color for panes
set -g pane-active-border-style bg=colour130,fg=colour250
# -- navigation ----------------------------------------------------------------
# create session
bind C-c new-session
# find session
bind C-f command-prompt -p find-session 'switch-client -t %%'
# split current window horizontally
bind s split-window -v
# split current window vertically
bind v split-window -h
# close pane
bind w kill-pane
# pane navigation
bind -r h select-pane -L # move left
bind -r j select-pane -D # move down
bind -r k select-pane -U # move up
bind -r l select-pane -R # move right
bind > swap-pane -D # swap current pane with the next one
bind < swap-pane -U # swap current pane with the previous one
# maximize current pane
bind + run 'cut -c3- ~/.tmux.conf | sh -s _maximize_pane "#{session_name}" #D'
# pane resizing
bind -r H resize-pane -L 2
bind -r J resize-pane -D 2
bind -r K resize-pane -U 2
bind -r L resize-pane -R 2
# window navigation
unbind n
unbind p
bin -r C-n new-window
bind -r C-h previous-window # select previous window
bind -r C-l next-window # select next window
bind Tab last-window # move to last active window
# toggle mouse
bind m run "cut -c3- ~/.tmux.conf | sh -s _toggle_mouse"
# -- urlview -------------------------------------------------------------------
bind U run "cut -c3- ~/.tmux.conf | sh -s _urlview #{pane_id}"
# -- facebook pathpicker -------------------------------------------------------
bind F run "cut -c3- ~/.tmux.conf | sh -s _fpp #{pane_id}"
# -- list choice (tmux < 2.4) --------------------------------------------------
# vi-choice is gone in tmux >= 2.4
run -b 'tmux bind -t vi-choice h tree-collapse 2> /dev/null || true'
run -b 'tmux bind -t vi-choice l tree-expand 2> /dev/null || true'
run -b 'tmux bind -t vi-choice K start-of-list 2> /dev/null || true'
run -b 'tmux bind -t vi-choice J end-of-list 2> /dev/null || true'
run -b 'tmux bind -t vi-choice H tree-collapse-all 2> /dev/null || true'
run -b 'tmux bind -t vi-choice L tree-expand-all 2> /dev/null || true'
run -b 'tmux bind -t vi-choice Escape cancel 2> /dev/null || true'
# -- edit mode (tmux < 2.4) ----------------------------------------------------
# vi-edit is gone in tmux >= 2.4
run -b 'tmux bind -ct vi-edit H start-of-line 2> /dev/null || true'
run -b 'tmux bind -ct vi-edit L end-of-line 2> /dev/null || true'
run -b 'tmux bind -ct vi-edit q cancel 2> /dev/null || true'
run -b 'tmux bind -ct vi-edit Escape cancel 2> /dev/null || true'
# -- copy mode -----------------------------------------------------------------
bind Enter copy-mode # enter copy mode
run -b 'tmux bind -t vi-copy v begin-selection 2> /dev/null || true'
run -b 'tmux bind -T copy-mode-vi v send -X begin-selection 2> /dev/null || true'
run -b 'tmux bind -t vi-copy C-v rectangle-toggle 2> /dev/null || true'
run -b 'tmux bind -T copy-mode-vi C-v send -X rectangle-toggle 2> /dev/null || true'
run -b 'tmux bind -t vi-copy y copy-selection 2> /dev/null || true'
run -b 'tmux bind -T copy-mode-vi y send -X copy-selection-and-cancel 2> /dev/null || true'
run -b 'tmux bind -t vi-copy Escape cancel 2> /dev/null || true'
run -b 'tmux bind -T copy-mode-vi Escape send -X cancel 2> /dev/null || true'
run -b 'tmux bind -t vi-copy H start-of-line 2> /dev/null || true'
run -b 'tmux bind -T copy-mode-vi H send -X start-of-line 2> /dev/null || true'
run -b 'tmux bind -t vi-copy L end-of-line 2> /dev/null || true'
run -b 'tmux bind -T copy-mode-vi L send -X end-of-line 2> /dev/null || true'
# copy to macOS clipboard
if -b 'command -v pbcopy > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | pbcopy"'
if -b 'command -v reattach-to-user-namespace > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | reattach-to-user-namespace pbcopy"'
# copy to X11 clipboard
if -b 'command -v xsel > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | xsel -i -b"'
if -b '! command -v xsel > /dev/null 2>&1 && command -v xclip > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | xclip -i -selection clipboard >/dev/null 2>&1"'
# copy to Windows clipboard
if -b 'command -v clip.exe > /dev/null 2>&1' 'bind y run -b "tmux save-buffer - | clip.exe"'
if -b '[ -c /dev/clipboard ]' 'bind y run -b "tmux save-buffer - > /dev/clipboard"'
# -- buffers -------------------------------------------------------------------
bind b list-buffers # list paste buffers
bind p paste-buffer # paste from the top paste buffer
bind P choose-buffer # choose which buffer to paste from
# -- user defined overrides ----------------------------------------------------
if '[ -f ~/.tmux.conf.local ]' 'source ~/.tmux.conf.local'
# -- 8< ------------------------------------------------------------------------
run 'cut -c3- ~/.tmux.conf | sh -s _apply_configuration'
run -b '[ -z "#{window_active}" ] && [ -z "#{version}" ] && tmux set display-time 3000 \; display "This configuration will soon require tmux >= 2.4" \; set -u display-time || true'
+6 -67
View File
@@ -1,68 +1,7 @@
# -- navigation ---------------------------------------------------------------- # ~/.tmux.conf.local
# Personal or machine-specific overrides for ~/.tmux.conf.
# This file is deliberately small; its previous version was saved beside it.
# if you're running tmux within iTerm2 # Examples:
# - and tmux is 1.9 or 1.9a # set -g status-position top
# - and iTerm2 is configured to let option key act as +Esc # bind -n M-Left select-pane -L
# - and iTerm2 is configured to send [1;9A -> [1;9D for option + arrow keys
# then uncomment the following line to make Meta + arrow keys mapping work
#set -ga terminal-overrides "*:kUP3=\e[1;9A,*:kDN3=\e[1;9B,*:kRIT3=\e[1;9C,*:kLFT3=\e[1;9D"
# -- windows & pane creation ---------------------------------------------------
# new window retains current path, possible values are:
# - true
# - false (default)
tmux_conf_new_window_retain_current_path=false
# new pane retains current path, possible values are:
# - true (default)
# - false
tmux_conf_new_pane_retain_current_path=true
# new pane tries to reconnect ssh sessions (experimental), possible values are:
# - true
# - false (default)
tmux_conf_new_pane_reconnect_ssh=false
# prompt for session name when creating a new session, possible values are:
# - true
# - false (default)
tmux_conf_new_session_prompt=false
# -- display -------------------------------------------------------------------
# -- clipboard -----------------------------------------------------------------
# in copy mode, copying selection also copies to the OS clipboard
# - true
# - false (default)
# on macOS, this requires installing reattach-to-user-namespace, see README.md
# on Linux, this requires xsel or xclip
tmux_conf_copy_to_os_clipboard=true
# -- user customizations -------------------------------------------------------
# this is the place to override or undo settings
# increase history size
#set -g history-limit 10000
# start with mouse mode enabled
set -g mouse on
# force Vi mode
# really you should export VISUAL or EDITOR environment variable, see manual
#set -g status-keys vi
#set -g mode-keys vi
# replace C-b by C-a instead of using both prefixes
set -gu prefix2
unbind C-a
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# move status line to top
#set -g status-position top