04.10.2022

Путь к моему идеальному десктопу

Ну что сказать, я на полпути к идеальному десктопу для меня. Старался сделать так, чтобы было ОЧЕНЬ удобно юзать, поэтому выбрал openbsd и spectrwm

.spectrwm.conf

spawn_position = first
border_width = 3
color_focus = white
color_focus_maximized	= yellow
tile_gap = 6
bar_border_width	= 0
bar_font_color[1]	= white,yellow,rgb:a0/a0/a0,rgb:e9/e9/e9
bar_font = Ptmono:pixelsize=14:antialias=true
bar_action = /home/nightlord/baraction.sh
bar_action_expand	= 1
bar_justify = left
bar_format = +@fg=2;+I +@fg=0;%R +@fg=3;%a(%d) %b(%m) %Y +A
bar_at_bottom = 1
modkey = Mod4
keyboard_mapping = ~/.spectrwm_us.conf
program[term] = urxvt
program[mpctoggle]	= mpc toggle
bind[mpctoggle] = Control + space
program[mpcnext]	= mpc next
bind[mpcnext] = Control + MOD + l
program[mpcprev]	= mpc prev
bind[mpcprev] = Control + MOD + j
program[xlock] = /home/nightlord/scripts/mpv-pause-lock.sh
bind[xlock] = MOD + s
quirk[transmission] = WS[2]
quirk[KeePassXC] = WS[3]
quirk[.*] = FOCUSPREV

.spectrwm_us.conf

bind[bar_toggle_ws]	= MOD+Shift+b
bind[button2] = MOD+v
bind[flip_layout]	= MOD+Shift+backslash
bind[focus_main]	= MOD+m
bind[focus_next]	= MOD+l
bind[focus_next]	= MOD+Tab
bind[focus_prev]	= MOD+j
bind[focus_prev]	= MOD+Shift+Tab
bind[focus_urgent]	= MOD+u
bind[height_grow]	= MOD+Shift+equal
bind[height_shrink]	= MOD+Shift+minus
bind[initscr] = MOD+Shift+i
bind[maximize_toggle]	= MOD+f
bind[maximize_toggle]	= F11
bind[menu] = MOD+p
bind[move_down] = MOD+Shift+bracketright
bind[move_up] = MOD+Shift+bracketleft
bind[mvrg_1] = MOD+Shift+KP_End
bind[mvrg_2] = MOD+Shift+KP_Down
bind[mvrg_3] = MOD+Shift+KP_Next
bind[mvrg_4] = MOD+Shift+KP_Left
bind[mvrg_5] = MOD+Shift+KP_Begin
bind[mvrg_6] = MOD+Shift+KP_Right
bind[mvrg_7] = MOD+Shift+KP_Home
bind[mvrg_8] = MOD+Shift+KP_Up
bind[mvrg_9] = MOD+Shift+KP_Prior
bind[mvws_1] = MOD+Shift+1
bind[mvws_2] = MOD+Shift+2
bind[mvws_3] = MOD+Shift+3
bind[mvws_4] = MOD+Shift+4
bind[mvws_5] = MOD+Shift+5
bind[mvws_6] = MOD+Shift+6
bind[mvws_7] = MOD+Shift+7
bind[mvws_8] = MOD+Shift+8
bind[mvws_9] = MOD+Shift+9
bind[mvws_10] = MOD+Shift+0
bind[mvws_11] = MOD+Shift+F1
bind[mvws_12] = MOD+Shift+F2
bind[mvws_13] = MOD+Shift+F3
bind[mvws_14] = MOD+Shift+F4
bind[mvws_15] = MOD+Shift+F5
bind[mvws_16] = MOD+Shift+F6
bind[mvws_17] = MOD+Shift+F7
bind[mvws_18] = MOD+Shift+F8
bind[mvws_19] = MOD+Shift+F9
bind[mvws_20] = MOD+Shift+F10
bind[mvws_21] = MOD+Shift+F11
bind[mvws_22] = MOD+Shift+F12
bind[name_workspace]	= MOD+Shift+slash
bind[raise_toggle]	= MOD+Shift+r
bind[restart] = MOD+q
bind[rg_1] = MOD+KP_End
bind[rg_2] = MOD+KP_Down
bind[rg_3] = MOD+KP_Next
bind[rg_4] = MOD+KP_Left
bind[rg_5] = MOD+KP_Begin
bind[rg_6] = MOD+KP_Right
bind[rg_7] = MOD+KP_Home
bind[rg_8] = MOD+KP_Up
bind[rg_9] = MOD+KP_Prior
bind[screenshot_all]	= MOD+w
bind[screenshot_wind]	= MOD+Shift+w
bind[search_workspace]	= MOD+slash
bind[stack_dec] = MOD+Shift+period
bind[stack_inc] = MOD+Shift+comma
bind[stack_reset]	= MOD+Shift+space
bind[swap_main] = MOD+Return
bind[swap_next] = MOD+Shift+j
bind[swap_prev] = MOD+Shift+k
bind[term] = MOD+Shift+Return
bind[uniconify] = MOD+Shift+w
bind[version] = MOD+Shift+v
bind[wind_kill] = MOD+Shift+x
bind[ws_1] = MOD+1
bind[ws_2] = MOD+2
bind[ws_3] = MOD+3
bind[ws_4] = MOD+4
bind[ws_5] = MOD+5
bind[ws_6] = MOD+6
bind[ws_7] = MOD+7
bind[ws_8] = MOD+8
bind[ws_9] = MOD+9
bind[ws_10] = MOD+0
bind[ws_11] = MOD+F1
bind[ws_12] = MOD+F2
bind[ws_13] = MOD+F3
bind[ws_14] = MOD+F4
bind[ws_15] = MOD+F5
bind[ws_16] = MOD+F6
bind[ws_17] = MOD+F7
bind[ws_18] = MOD+F8
bind[ws_19] = MOD+F9
bind[ws_20] = MOD+F10
bind[ws_21] = MOD+F11
bind[ws_22] = MOD+F12
bind[ws_next_all]	= MOD+Up
bind[ws_next_move]	= MOD+Shift+Up
bind[ws_prev_all]	= MOD+Down
bind[ws_prev_move]	= MOD+Shift+Down
bind[ws_prior] = MOD+a 
  1. Уведомления.
    Показом уведомлений занимается dunst,

    [global]
    monitor = 0
    follow = none
    width = (400, 600)
    height = 300
    origin = bottom-right
    offset = 10x50
    scale = 0
    notification_limit = 0
    progress_bar = true
    progress_bar_height = 10
    progress_bar_frame_width = 1
    progress_bar_min_width = 150
    progress_bar_max_width = 300
    indicate_hidden = yes
    transparency = 30
    separator_height = 2
    padding = 8
    horizontal_padding = 8
    text_icon_padding = 0
    frame_width = 3
    separator_color = frame
    sort = yes
    idle_threshold = 120
    font = PTMono 12
    line_height = 0
    markup = no
    format = "<b>%s</b>\n%b"
    alignment = left
    vertical_alignment = center
    show_age_threshold = -1
    ellipsize = middle
    ignore_newline = no
    stack_duplicates = true
    hide_duplicate_count = true
    show_indicators = yes
    icon_position = off
    min_icon_size = 0
    max_icon_size = 0
    sticky_history = no
    history_length = 20
    dmenu = /usr/local/bin/dmenu -p dunst:
    browser = /usr/local/bin/xdg-open
    always_run_script = true
    title = Dunst
    class = Dunst
    corner_radius = 10
    ignore_dbusclose = false
    force_xwayland = false
    force_xinerama = false
    mouse_left_click = close_current
    mouse_middle_click = do_action, close_current
    mouse_right_click = close_all
    [experimental]
    per_monitor_dpi = false
    [urgency_low]
    timeout = 10
    [urgency_normal]
    timeout = 10
    [urgency_critical]
    timeout = 10
    fullscreen = show
    [mail]
    summary = "Почта*" fullscreen = delay
    [inbox]
    body = "*INBOX*"
    fullscreen = show
    [yt]
    body = "*youtube*"
    fullscreen = show
    [uk_money]
    summary = "MONEY*"
    urgency = critical
    fullscreen = show
    [uk_water]
    summary = "WATER*"
    urgency = critical
    fullscreen = show
    
  2. Xbindkeys.
    Всем хорош spectrwm, но он не понимает комбинацию alt+enter для максимизации окна, поэтому приходится держать запущенным xbindkeys с

    "/home/nightlord/scripts/window_max.sh"
    m:0x80 + c:36
    
  3. Блокировка.
    Когда я ухожу из-за компа, его надо бы блокировать, для этого использую slock.
  4. Обоина — https://wallhaven.cc/w/lmgp6r
  5. Emacs и gnus.
    Конфиги показывать не буду, поскольку они очень большие и страшные :(
  6. Кино и сериалы.
    Для просмотра использую mpv с конфигами —
    mpv.conf

    demuxer-max-bytes=5128000
    demuxer-max-back-bytes=0
    write-filename-in-watch-later-config=yes
    save-position-on-quit=yes
    audio-channels=2
    sub-ass-hinting=normal
    fullscreen=no
    alang=eng
    vo=gpu
    ao=sndio
    ytdl-format="bestvideo[height<=720][vcodec=vp9]+bestaudio/best"
    profile=gpu-hq
    loop-playlist=force
    sub-font-size=20
    sub-pos=60
    brightness=4
    gamma=20
    contrast=10
    deinterlace=no
    osd-font-size=30
    tone-mapping=hable
    override-display-fps=60
    tscale=bicubic
    interpolation=yes
    video-sync=display-resample
    term-status-msg="AV: ${time-pos}"
    window-maximized=yes
    watch-later-options-remove=pause
    osd-font='Terminus'
    dither-depth=auto
    temporal-dither=yes
    dither=fruit
    video-output-levels=full
    af-add='dynaudnorm=g=5:f=250:r=0.9:p=0.5'
    hwdec=auto
    

    input.conf

    ctrl+r write-watch-later-config ; show-text "Reloading file..." ; loadfile "${path}"
    MBTN_LEFT cycle pause nil
    MBTN_MID quit
    MBTN_RIGHT cycle window-maximized
    WHEEL_UP add volume 2
    WHEEL_DOWN add volume -2
    [ ignore
    ] ignore
    q quit-watch-later
    p set pause yes
    1 ignore
    2 ignore
    3 ignore
    4 ignore
    5 ignore
    6 ignore
    7 ignore
    8 ignore
    d ignore
    f cycle window-maximized
    s ignore
    w ignore
    e ignore
    
  7. Терминал (Нет, не фильм с Хэнксом)
    Использую eshell с алиасами.

Если чего забыл (наверняка) — спрашивайте в комментах.

>>> Просмотр (1920×1200, 749 Kb)

Источник.