Compare commits
3 Commits
9577ad69c9
...
02cc4698dc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02cc4698dc | ||
|
|
fa6cf37c92 | ||
|
|
a7f6f8a3e0 |
@@ -32,6 +32,6 @@ if [ -d "$HOME/.local/bin" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
|
if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
|
||||||
exec sway --unsupported-gpu
|
exec sway --unsupported-gpu > ~/.sway.log 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
3
.bashrc
3
.bashrc
@@ -18,6 +18,7 @@ shopt -s histappend
|
|||||||
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
|
||||||
HISTSIZE=100000
|
HISTSIZE=100000
|
||||||
HISTFILESIZE=200000
|
HISTFILESIZE=200000
|
||||||
|
HISTTIMEFORMAT='%F %T '
|
||||||
|
|
||||||
# check the window size after each command and, if necessary,
|
# check the window size after each command and, if necessary,
|
||||||
# update the values of LINES and COLUMNS.
|
# update the values of LINES and COLUMNS.
|
||||||
@@ -33,7 +34,7 @@ shopt -s autocd
|
|||||||
alias ls='ls -lahtr --color=auto'
|
alias ls='ls -lahtr --color=auto'
|
||||||
alias vi='kak'
|
alias vi='kak'
|
||||||
alias df='/usr/bin/git --git-dir=$HOME/.dotfilesrepo/ --work-tree=$HOME'
|
alias df='/usr/bin/git --git-dir=$HOME/.dotfilesrepo/ --work-tree=$HOME'
|
||||||
alias unpack='dtrx'
|
alias unpack='bsdtar -xf'
|
||||||
alias imv='imv-wayland'
|
alias imv='imv-wayland'
|
||||||
alias sway='sway --unsupported-gpu'
|
alias sway='sway --unsupported-gpu'
|
||||||
|
|
||||||
|
|||||||
@@ -16,8 +16,35 @@ map global user / ': comment-line<ret>'
|
|||||||
# insert four spaces instead of a tab character while in insert mode.
|
# insert four spaces instead of a tab character while in insert mode.
|
||||||
map global insert <tab> '<space><space><space><space>'
|
map global insert <tab> '<space><space><space><space>'
|
||||||
|
|
||||||
hook global RegisterModified '"' %{ nop %sh{
|
hook global InsertChar j %{ try %{
|
||||||
printf %s "$kak_main_reg_dquote" | wl-copy > /dev/null 2>&1 &
|
exec -draft hH <a-k>jj<ret> d
|
||||||
|
exec -with-hooks <esc>
|
||||||
|
}}
|
||||||
|
evaluate-commands %sh{
|
||||||
|
if [ -n "${WAYLAND_DISPLAY:-}" ] && command -v wl-copy >/dev/null 2>&1 && command -v wl-paste >/dev/null 2>&1; then
|
||||||
|
printf %s "
|
||||||
|
hook global RegisterModified '\"' %{ nop %reg{dquote} %sh{
|
||||||
|
printf %s \"\$kak_main_reg_dquote\" | wl-copy > /dev/null 2>&1 &
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
define-command -hidden paste-system-after %{
|
||||||
|
evaluate-commands -save-regs '\"' %{
|
||||||
|
set-register dquote %sh{ wl-paste --no-newline 2>/dev/null }
|
||||||
|
execute-keys p
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
define-command -hidden paste-system-before %{
|
||||||
|
evaluate-commands -save-regs '\"' %{
|
||||||
|
set-register dquote %sh{ wl-paste --no-newline 2>/dev/null }
|
||||||
|
execute-keys P
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
map global normal p ': paste-system-after<ret>'
|
||||||
|
map global normal P ': paste-system-before<ret>'
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
add-highlighter global/ number-lines
|
add-highlighter global/ number-lines
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"theme": "Merge Dark.sublime-theme",
|
/*"theme": "Merge Dark.sublime-theme",*/
|
||||||
"side_bar_layout": "tabs",
|
"side_bar_layout": "tabs",
|
||||||
"diff_algorithm": "match_git",
|
"diff_algorithm": "match_git",
|
||||||
"visible_carriage_returns_at_eol": true,
|
"visible_carriage_returns_at_eol": true,
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
[
|
||||||
|
{ "keys": ["ctrl+q"], "command": "goto_definition" },
|
||||||
|
{ "keys": ["alt+q"], "command": "jump_back" },
|
||||||
|
|
||||||
|
{ "keys": ["ctrl+e"], "command": "next_result" },
|
||||||
|
{ "keys": ["alt+e"], "command": "prev_result" },
|
||||||
|
|
||||||
|
{ "keys": ["ctrl+up"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": false} },
|
||||||
|
{ "keys": ["ctrl+down"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": true} },
|
||||||
|
{ "keys": ["ctrl+shift+up"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": false, "extend": true} },
|
||||||
|
{ "keys": ["ctrl+shift+down"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": true, "extend": true} },
|
||||||
|
|
||||||
|
{ "keys": ["alt+up"], "command": "swap_line_up" },
|
||||||
|
{ "keys": ["alt+down"], "command": "swap_line_down" },
|
||||||
|
{ "keys": ["alt+left"], "command": "jump_back" },
|
||||||
|
{ "keys": ["alt+right"], "command": "jump_forward" },
|
||||||
|
|
||||||
|
{ "keys": ["alt+shift+up"], "command": "select_lines", "args": {"forward": false} },
|
||||||
|
{ "keys": ["alt+shift+down"], "command": "select_lines", "args": {"forward": true} },
|
||||||
|
{ "keys": ["ctrl+alt+down"], "command": "duplicate_line" },
|
||||||
|
{ "keys": ["ctrl+alt+up"], "command": "duplicate_line" },
|
||||||
|
|
||||||
|
|
||||||
|
{ "keys": ["ctrl+shift+l"], "command": "split_selection_into_lines" },
|
||||||
|
{ "keys": ["ctrl+r"], "command": "goto_symbol_in_project" },
|
||||||
|
{ "keys": ["ctrl+m"], "command": "toggle_record_macro" },
|
||||||
|
{ "keys": ["alt+m"], "command": "run_macro" },
|
||||||
|
]
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"bootstrapped": true,
|
||||||
|
"in_process_packages":
|
||||||
|
[
|
||||||
|
],
|
||||||
|
"installed_packages":
|
||||||
|
[
|
||||||
|
"A File Icon",
|
||||||
|
"ayu",
|
||||||
|
"gruvbox",
|
||||||
|
"Package Control",
|
||||||
|
],
|
||||||
|
}
|
||||||
@@ -31,5 +31,8 @@
|
|||||||
// "line_numbers": false,
|
// "line_numbers": false,
|
||||||
// "gutter": false,
|
// "gutter": false,
|
||||||
// "margin": 0,
|
// "margin": 0,
|
||||||
"color_scheme": "gruvbox (Dark) (Hard).sublime-color-scheme",
|
// "color_scheme": "gruvbox (Dark) (Hard).sublime-color-scheme",
|
||||||
|
"color_scheme": "auto",
|
||||||
|
"dark_color_scheme": "Mariana.sublime-color-scheme",
|
||||||
|
"light_color_scheme": "Breakers.sublime-color-scheme",
|
||||||
}
|
}
|
||||||
@@ -91,6 +91,7 @@ input "1267:12734:ELAN06FA:00_04F3:31BE_Touchpad" {
|
|||||||
|
|
||||||
# Start your launcher
|
# Start your launcher
|
||||||
bindsym $mod+p exec $menu
|
bindsym $mod+p exec $menu
|
||||||
|
bindsym $mod+d exec /home/kk/bin/docs-list.c
|
||||||
|
|
||||||
# Drag floating windows by holding down $mod and left mouse button.
|
# Drag floating windows by holding down $mod and left mouse button.
|
||||||
# Resize them with right mouse button + $mod.
|
# Resize them with right mouse button + $mod.
|
||||||
|
|||||||
@@ -15,12 +15,21 @@ set -g renumber-windows on
|
|||||||
set -g default-terminal "tmux-256color"
|
set -g default-terminal "tmux-256color"
|
||||||
set -as terminal-features ",*:RGB"
|
set -as terminal-features ",*:RGB"
|
||||||
|
|
||||||
|
# Allow terminal escape passthrough for apps such as opencode that use OSC 52
|
||||||
|
# clipboard sequences from inside tmux.
|
||||||
|
set -g allow-passthrough on
|
||||||
|
|
||||||
# Keep a large scrollback history.
|
# Keep a large scrollback history.
|
||||||
set -g history-limit 1000000
|
set -g history-limit 1000000
|
||||||
|
|
||||||
# Reload config with prefix + r.
|
# Reload config with prefix + r.
|
||||||
bind-key r source-file ~/.config/tmux/tmux.conf \; display-message "tmux config reloaded"
|
bind-key r source-file ~/.config/tmux/tmux.conf \; display-message "tmux config reloaded"
|
||||||
|
|
||||||
|
# Open new panes/windows in the currently focused pane's directory.
|
||||||
|
bind-key % split-window -h -c "#{pane_current_path}"
|
||||||
|
bind-key '"' split-window -v -c "#{pane_current_path}"
|
||||||
|
bind-key c new-window -c "#{pane_current_path}"
|
||||||
|
|
||||||
# Pane navigation with Vim-style keys
|
# Pane navigation with Vim-style keys
|
||||||
bind-key h select-pane -L
|
bind-key h select-pane -L
|
||||||
bind-key j select-pane -D
|
bind-key j select-pane -D
|
||||||
|
|||||||
@@ -1,150 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
username=kk
|
|
||||||
|
|
||||||
core_packages=(
|
|
||||||
tmux
|
|
||||||
kakoune
|
|
||||||
man-db
|
|
||||||
man-pages
|
|
||||||
clang
|
|
||||||
make
|
|
||||||
tcc
|
|
||||||
ripgrep
|
|
||||||
curl
|
|
||||||
plocate
|
|
||||||
fzf
|
|
||||||
gdb
|
|
||||||
)
|
|
||||||
|
|
||||||
network_packages=(
|
|
||||||
openssh
|
|
||||||
sshfs
|
|
||||||
)
|
|
||||||
|
|
||||||
desktop_packages=(
|
|
||||||
sway
|
|
||||||
swayidle
|
|
||||||
swaybg
|
|
||||||
swaylock
|
|
||||||
foot
|
|
||||||
wmenu
|
|
||||||
xorg-xwayland
|
|
||||||
wl-clipboard
|
|
||||||
xdg-desktop-portal-wlr
|
|
||||||
xdg-user-dirs
|
|
||||||
grim
|
|
||||||
)
|
|
||||||
|
|
||||||
media_packages=(
|
|
||||||
pipewire
|
|
||||||
pipewire-pulse
|
|
||||||
pipewire-alsa
|
|
||||||
pipewire-jack
|
|
||||||
wireplumber
|
|
||||||
pavucontrol
|
|
||||||
ffmpeg
|
|
||||||
imv
|
|
||||||
mpv
|
|
||||||
)
|
|
||||||
|
|
||||||
font_packages=(
|
|
||||||
ttf-fira-code
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk
|
|
||||||
noto-fonts-emoji
|
|
||||||
noto-fonts-extra
|
|
||||||
ttf-liberation
|
|
||||||
ttf-dejavu
|
|
||||||
ttf-roboto
|
|
||||||
)
|
|
||||||
|
|
||||||
app_packages=(
|
|
||||||
firefox
|
|
||||||
)
|
|
||||||
|
|
||||||
machine_packages=(
|
|
||||||
nvidia-open
|
|
||||||
)
|
|
||||||
|
|
||||||
if [[ ${EUID} -ne 0 ]]; then
|
|
||||||
printf 'Run this script as root inside arch-chroot.\n' >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
ln -sf /usr/share/zoneinfo/Europe/Warsaw /etc/localtime
|
|
||||||
hwclock --systohc
|
|
||||||
|
|
||||||
sed -i 's/^#\(en_US.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
|
||||||
sed -i 's/^#\(pl_PL.UTF-8 UTF-8\)/\1/' /etc/locale.gen
|
|
||||||
locale-gen
|
|
||||||
|
|
||||||
cat >/etc/locale.conf <<'EOF'
|
|
||||||
LANG=en_US.UTF-8
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat >/etc/vconsole.conf <<'EOF'
|
|
||||||
KEYMAP=pl2
|
|
||||||
EOF
|
|
||||||
|
|
||||||
bootctl install
|
|
||||||
|
|
||||||
cat >/boot/loader/loader.conf <<'EOF'
|
|
||||||
default arch.conf
|
|
||||||
timeout 0
|
|
||||||
console-mode max
|
|
||||||
editor no
|
|
||||||
EOF
|
|
||||||
|
|
||||||
root_uuid=$(findmnt -no UUID /)
|
|
||||||
if [[ -z ${root_uuid} ]]; then
|
|
||||||
printf 'Could not detect root filesystem UUID. Check findmnt/blkid manually.\n' >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat >/boot/loader/entries/arch.conf <<EOF
|
|
||||||
title Arch Linux
|
|
||||||
linux /vmlinuz-linux
|
|
||||||
initrd /amd-ucode.img
|
|
||||||
initrd /initramfs-linux.img
|
|
||||||
options root=UUID=${root_uuid} rw
|
|
||||||
EOF
|
|
||||||
|
|
||||||
bootctl status
|
|
||||||
|
|
||||||
systemctl enable systemd-networkd.service
|
|
||||||
systemctl enable systemd-resolved.service
|
|
||||||
ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
|
|
||||||
install -d /etc/systemd/network
|
|
||||||
ln -sf /usr/lib/systemd/network/89-ethernet.network.example /etc/systemd/network/89-ethernet.network
|
|
||||||
|
|
||||||
if ! id -u "${username}" >/dev/null 2>&1; then
|
|
||||||
useradd -m -s /bin/bash -G wheel,video,render "${username}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
install -m 0750 -d /etc/sudoers.d
|
|
||||||
cat >/etc/sudoers.d/00-wheel <<'EOF'
|
|
||||||
%wheel ALL=(ALL:ALL) ALL
|
|
||||||
EOF
|
|
||||||
chmod 0440 /etc/sudoers.d/00-wheel
|
|
||||||
visudo -cf /etc/sudoers.d/00-wheel
|
|
||||||
|
|
||||||
passwd "${username}"
|
|
||||||
|
|
||||||
pacman -Syu --needed \
|
|
||||||
"${core_packages[@]}" \
|
|
||||||
"${network_packages[@]}" \
|
|
||||||
"${desktop_packages[@]}" \
|
|
||||||
"${media_packages[@]}" \
|
|
||||||
"${font_packages[@]}" \
|
|
||||||
"${app_packages[@]}" \
|
|
||||||
"${machine_packages[@]}"
|
|
||||||
|
|
||||||
updatedb
|
|
||||||
systemctl enable sshd.service
|
|
||||||
|
|
||||||
printf '\nChroot setup complete. Exit, unmount /mnt, reboot, then log in as %s.\n' "${username}"
|
|
||||||
printf 'After first login, run: xdg-user-dirs-update\n'
|
|
||||||
printf 'After first login, run: systemctl --user enable --now pipewire pipewire-pulse wireplumber\n'
|
|
||||||
printf 'Generate SSH key after first login with: ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519\n'
|
|
||||||
@@ -12,6 +12,8 @@ base_packages=(
|
|||||||
amd-ucode # AMD CPU microcode updates loaded by the boot loader
|
amd-ucode # AMD CPU microcode updates loaded by the boot loader
|
||||||
sudo # Run commands as root from the user account
|
sudo # Run commands as root from the user account
|
||||||
git # Version control and cloning dotfiles
|
git # Version control and cloning dotfiles
|
||||||
|
which
|
||||||
|
base-devel
|
||||||
)
|
)
|
||||||
|
|
||||||
pacstrap -K /mnt "${base_packages[@]}"
|
pacstrap -K /mnt "${base_packages[@]}"
|
||||||
|
|||||||
165
bin/docs-list.c
Executable file
165
bin/docs-list.c
Executable file
@@ -0,0 +1,165 @@
|
|||||||
|
#!/usr/bin/tcc -run
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
void print_man_dir(FILE *menu, const char *dir) {
|
||||||
|
DIR *d = opendir(dir);
|
||||||
|
if (!d) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct dirent *ent;
|
||||||
|
while ((ent = readdir(d))) {
|
||||||
|
if (ent->d_name[0] == '.') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
char file[512];
|
||||||
|
snprintf(file, sizeof(file), "%s", ent->d_name);
|
||||||
|
|
||||||
|
const char *suffixes[] = {".gz", ".bz2", ".xz", ".lzma", ".zst"};
|
||||||
|
for (size_t i = 0; i < sizeof(suffixes) / sizeof(suffixes[0]); i++) {
|
||||||
|
size_t flen = strlen(file);
|
||||||
|
size_t slen = strlen(suffixes[i]);
|
||||||
|
if (flen > slen && strcmp(file + flen - slen, suffixes[i]) == 0) {
|
||||||
|
file[flen - slen] = '\0';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char *dot = strrchr(file, '.');
|
||||||
|
if (!dot || dot == file || !dot[1]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
*dot++ = '\0';
|
||||||
|
fprintf(menu, "%s (%s)\tman\n", file, dot);
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
void print_man_pages(FILE *menu, const char *root) {
|
||||||
|
DIR *d = opendir(root);
|
||||||
|
if (!d) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct dirent *ent;
|
||||||
|
char path[4096];
|
||||||
|
while ((ent = readdir(d))) {
|
||||||
|
if (strncmp(ent->d_name, "man", 3) != 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(path, sizeof(path), "%s/%s", root, ent->d_name);
|
||||||
|
print_man_dir(menu, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
char path[] = "/tmp/docs-list.XXXXXX";
|
||||||
|
int fd = mkstemp(path);
|
||||||
|
if (fd < 0) {
|
||||||
|
perror("mkstemp");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *menu = fdopen(fd, "w");
|
||||||
|
if (!menu) {
|
||||||
|
perror("fdopen");
|
||||||
|
unlink(path);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
char line[8192];
|
||||||
|
FILE *manpath = popen("manpath 2>/dev/null", "r");
|
||||||
|
if (manpath && fgets(line, sizeof(line), manpath)) {
|
||||||
|
line[strcspn(line, "\n")] = '\0';
|
||||||
|
for (char *dir = strtok(line, ":"); dir; dir = strtok(NULL, ":")) {
|
||||||
|
print_man_pages(menu, dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (manpath) {
|
||||||
|
pclose(manpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE *pydoc = popen("python -c 'import pkgutil; [print(m) for m in sorted({m.name for m in pkgutil.iter_modules()})]'", "r");
|
||||||
|
if (pydoc) {
|
||||||
|
while (fgets(line, sizeof(line), pydoc)) {
|
||||||
|
line[strcspn(line, "\n")] = '\0';
|
||||||
|
fprintf(menu, "%s\tpydoc\n", line);
|
||||||
|
}
|
||||||
|
pclose(pydoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
fclose(menu);
|
||||||
|
|
||||||
|
char command[1024];
|
||||||
|
snprintf(command, sizeof(command), "wmenu -i -l 20 < '%s'", path);
|
||||||
|
|
||||||
|
FILE *wmenu = popen(command, "r");
|
||||||
|
if (!wmenu) {
|
||||||
|
perror("wmenu");
|
||||||
|
unlink(path);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!fgets(line, sizeof(line), wmenu)) {
|
||||||
|
pclose(wmenu);
|
||||||
|
unlink(path);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int status = pclose(wmenu);
|
||||||
|
unlink(path);
|
||||||
|
if (status != 0) {
|
||||||
|
return WIFEXITED(status) ? WEXITSTATUS(status) : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
line[strcspn(line, "\n")] = '\0';
|
||||||
|
char *kind = strrchr(line, '\t');
|
||||||
|
if (!kind) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
*kind++ = '\0';
|
||||||
|
|
||||||
|
if (strcmp(kind, "man") == 0) {
|
||||||
|
char *s = line;
|
||||||
|
char name[256] = {0};
|
||||||
|
char section[64] = {0};
|
||||||
|
size_t i = 0;
|
||||||
|
|
||||||
|
while (*s && !isspace((unsigned char)*s) && *s != '(' && i < sizeof(name) - 1) {
|
||||||
|
name[i++] = *s++;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *open = strchr(s, '(');
|
||||||
|
char *close = open ? strchr(open + 1, ')') : NULL;
|
||||||
|
if (open && close && close > open + 1) {
|
||||||
|
size_t len = close - open - 1;
|
||||||
|
if (len >= sizeof(section)) {
|
||||||
|
len = sizeof(section) - 1;
|
||||||
|
}
|
||||||
|
memcpy(section, open + 1, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name[0] && section[0]) {
|
||||||
|
execlp("foot", "foot", "-e", "man", section, name, NULL);
|
||||||
|
} else if (name[0]) {
|
||||||
|
execlp("foot", "foot", "-e", "man", name, NULL);
|
||||||
|
}
|
||||||
|
} else if (strcmp(kind, "pydoc") == 0 && line[0]) {
|
||||||
|
execlp("foot", "foot", "-e", "python", "-m", "pydoc", line, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
perror("foot");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
2
bin/man-list
Executable file
2
bin/man-list
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
man -k . | wmenu -i -l 20 | awk '{print $1}' | xargs -r man
|
||||||
9
bin/pydoc-list
Executable file
9
bin/pydoc-list
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
module="$(
|
||||||
|
python - <<'PY' | wmenu -i -l 20
|
||||||
|
import pkgutil
|
||||||
|
for m in sorted({m.name for m in pkgutil.iter_modules()}):
|
||||||
|
print(m)
|
||||||
|
PY
|
||||||
|
)"
|
||||||
|
[ -n "$module" ] && foot -e python -m pydoc "$module"
|
||||||
Reference in New Issue
Block a user