First.
1
.Xresources
Normal file
|
@ -0,0 +1 @@
|
|||
Xcursor.theme: Bibata-Modern-Classic
|
5
.config/.gitconfig
Normal file
|
@ -0,0 +1,5 @@
|
|||
[user]
|
||||
email = kenyaz@vilyaem.xyz
|
||||
name = Vilyaem
|
||||
[credential]
|
||||
helper = cache
|
26
.config/OpenSCAD/OpenSCAD.conf
Normal file
|
@ -0,0 +1,26 @@
|
|||
[General]
|
||||
recentFileList=/home/vilyaem/kb.scad, /home/vilyaem/repos/keebcu/tedboard.scad
|
||||
|
||||
[3dview]
|
||||
colorscheme=Metallic
|
||||
|
||||
[design]
|
||||
autoReload=true
|
||||
|
||||
[view]
|
||||
hide3DViewToolbar=false
|
||||
hideConsole=false
|
||||
hideCustomizer=true
|
||||
hideEditor=true
|
||||
hideEditorToolbar=false
|
||||
hideErrorLog=false
|
||||
orthogonalProjection=false
|
||||
showAxes=true
|
||||
showCrosshairs=false
|
||||
showEdges=false
|
||||
showScaleProportional=true
|
||||
|
||||
[window]
|
||||
position=@Point(640 252)
|
||||
size=@Size(638 232)
|
||||
state=@ByteArray(\0\0\0\xff\0\0\0\0\xfd\0\0\0\x3\0\0\0\0\0\0\x2.\0\0\x2\x8a\xfc\x2\0\0\0\x1\xfb\0\0\0\x14\0\x65\0\x64\0i\0t\0o\0r\0\x44\0o\0\x63\0k\0\0\0\0\x14\0\0\x2\x8a\0\0\0j\0\xff\xff\xff\0\0\0\x1\0\0\x1\x65\0\0\0\0\xfc\x2\0\0\0\x1\xfb\0\0\0\x1a\0p\0\x61\0r\0\x61\0m\0\x65\0t\0\x65\0r\0\x44\0o\0\x63\0k\0\0\0\0\x14\0\0\0\x96\0\0\0\x96\0\xff\xff\xff\0\0\0\x3\0\0\x2~\0\0\0\x1d\xfc\x1\0\0\0\x2\xfb\0\0\0\x16\0\x63\0o\0n\0s\0o\0l\0\x65\0\x44\0o\0\x63\0k\x1\0\0\0\0\0\0\0\x85\0\0\0)\0\xff\xff\xff\xfb\0\0\0\x18\0\x65\0r\0r\0o\0r\0L\0o\0g\0\x44\0o\0\x63\0k\x1\0\0\0\x8b\0\0\x1\xf3\0\0\0)\0\xff\xff\xff\0\0\x2~\0\0\0\x9b\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\x2\xfc\0\0\0\x1\0\0\0\x2\0\0\0\x1\0\0\0\x14\0t\0\x61\0\x62\0T\0o\0o\0l\0\x42\0\x61\0r\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0)
|
1115
.config/dosbox/dosbox-staging.conf
Normal file
5
.config/foot/foot.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[main]
|
||||
shell=/bin/sh
|
||||
font=Terminus:size=14
|
||||
[colors]
|
||||
alpha=0.7
|
11
.config/gtk-2.0/gtkfilechooser.ini
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Filechooser Settings]
|
||||
LocationMode=filename-entry
|
||||
ShowHidden=false
|
||||
ShowSizeColumn=true
|
||||
GeometryX=270
|
||||
GeometryY=102
|
||||
GeometryWidth=819
|
||||
GeometryHeight=542
|
||||
SortColumn=modified
|
||||
SortOrder=descending
|
||||
StartupMode=recent
|
5
.config/gtk-3.0/settings.ini
Normal file
|
@ -0,0 +1,5 @@
|
|||
[Settings]
|
||||
gtk-icon-theme-name = Breeze
|
||||
gtk-theme-name = Breeze
|
||||
gtk-font-name = Terminus
|
||||
gtk-application-prefer-dark-theme = true
|
63
.config/htop/htoprc
Normal file
|
@ -0,0 +1,63 @@
|
|||
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||
# The parser is also very primitive, and not human-friendly.
|
||||
htop_version=3.3.0
|
||||
config_reader_min_version=3
|
||||
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=0
|
||||
hide_running_in_container=0
|
||||
shadow_other_users=0
|
||||
show_thread_names=0
|
||||
show_program_path=1
|
||||
highlight_base_name=0
|
||||
highlight_deleted_exe=1
|
||||
shadow_distribution_path_prefix=0
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
highlight_changes=0
|
||||
highlight_changes_delay_secs=5
|
||||
find_comm_in_cmdline=1
|
||||
strip_exe_from_cmdline=1
|
||||
show_merged_command=0
|
||||
header_margin=1
|
||||
screen_tabs=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_one=0
|
||||
show_cpu_usage=1
|
||||
show_cpu_frequency=0
|
||||
show_cpu_temperature=0
|
||||
degree_fahrenheit=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=0
|
||||
color_scheme=0
|
||||
enable_mouse=1
|
||||
delay=15
|
||||
hide_function_bar=0
|
||||
header_layout=two_50_50
|
||||
column_meters_0=AllCPUs Memory Swap
|
||||
column_meter_modes_0=1 1 1
|
||||
column_meters_1=Tasks LoadAverage Uptime
|
||||
column_meter_modes_1=2 2 2
|
||||
tree_view=0
|
||||
sort_key=46
|
||||
tree_sort_key=0
|
||||
sort_direction=-1
|
||||
tree_sort_direction=1
|
||||
tree_view_always_by_pid=0
|
||||
all_branches_collapsed=0
|
||||
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||
.sort_key=PERCENT_CPU
|
||||
.tree_sort_key=PID
|
||||
.tree_view_always_by_pid=0
|
||||
.tree_view=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=1
|
||||
.all_branches_collapsed=0
|
||||
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE Command
|
||||
.sort_key=IO_RATE
|
||||
.tree_sort_key=PID
|
||||
.tree_view_always_by_pid=0
|
||||
.tree_view=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=1
|
||||
.all_branches_collapsed=0
|
28
.config/mimeapps.list
Normal file
|
@ -0,0 +1,28 @@
|
|||
[Default Applications]
|
||||
x-scheme-handler/mailto=userapp-Thunderbird-5DSCS2.desktop
|
||||
message/rfc822=userapp-Thunderbird-5DSCS2.desktop
|
||||
x-scheme-handler/mid=userapp-Thunderbird-5DSCS2.desktop
|
||||
x-scheme-handler/http=firefox.desktop
|
||||
x-scheme-handler/https=firefox.desktop
|
||||
x-scheme-handler/chrome=firefox.desktop
|
||||
text/html=firefox.desktop
|
||||
application/x-extension-htm=firefox.desktop
|
||||
application/x-extension-html=firefox.desktop
|
||||
application/x-extension-shtml=firefox.desktop
|
||||
application/xhtml+xml=firefox.desktop
|
||||
application/x-extension-xhtml=firefox.desktop
|
||||
application/x-extension-xht=firefox.desktop
|
||||
|
||||
[Added Associations]
|
||||
x-scheme-handler/mailto=userapp-Thunderbird-5DSCS2.desktop;
|
||||
x-scheme-handler/mid=userapp-Thunderbird-5DSCS2.desktop;
|
||||
x-scheme-handler/http=firefox.desktop;
|
||||
x-scheme-handler/https=firefox.desktop;
|
||||
x-scheme-handler/chrome=firefox.desktop;
|
||||
text/html=firefox.desktop;
|
||||
application/x-extension-htm=firefox.desktop;
|
||||
application/x-extension-html=firefox.desktop;
|
||||
application/x-extension-shtml=firefox.desktop;
|
||||
application/xhtml+xml=firefox.desktop;
|
||||
application/x-extension-xhtml=firefox.desktop;
|
||||
application/x-extension-xht=firefox.desktop;
|
2
.config/mpv/mpv.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
ytdl-format=bestvideo[height<=480]+bestaudio/best
|
||||
audio-display=no
|
865
.config/neofetch/config.conf
Normal file
|
@ -0,0 +1,865 @@
|
|||
# See this wiki page for more info:
|
||||
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
|
||||
print_info() {
|
||||
info title
|
||||
info underline
|
||||
|
||||
info "OS" distro
|
||||
info "Host" model
|
||||
info "Kernel" kernel
|
||||
info "Uptime" uptime
|
||||
info "Packages" packages
|
||||
info "Shell" shell
|
||||
info "Resolution" resolution
|
||||
info "DE" de
|
||||
info "WM" wm
|
||||
info "WM Theme" wm_theme
|
||||
info "Theme" theme
|
||||
info "Icons" icons
|
||||
info "Terminal" term
|
||||
info "Terminal Font" term_font
|
||||
info "CPU" cpu
|
||||
info "GPU" gpu
|
||||
info "Memory" memory
|
||||
|
||||
# info "GPU Driver" gpu_driver # Linux/macOS only
|
||||
# info "CPU Usage" cpu_usage
|
||||
# info "Disk" disk
|
||||
# info "Battery" battery
|
||||
# info "Font" font
|
||||
# info "Song" song
|
||||
# [[ "$player" ]] && prin "Music Player" "$player"
|
||||
# info "Local IP" local_ip
|
||||
# info "Public IP" public_ip
|
||||
# info "Users" users
|
||||
# info "Locale" locale # This only works on glibc systems.
|
||||
|
||||
info cols
|
||||
}
|
||||
|
||||
# Title
|
||||
|
||||
|
||||
# Hide/Show Fully qualified domain name.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --title_fqdn
|
||||
title_fqdn="off"
|
||||
|
||||
|
||||
# Kernel
|
||||
|
||||
|
||||
# Shorten the output of the kernel function.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --kernel_shorthand
|
||||
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
|
||||
#
|
||||
# Example:
|
||||
# on: '4.8.9-1-ARCH'
|
||||
# off: 'Linux 4.8.9-1-ARCH'
|
||||
kernel_shorthand="on"
|
||||
|
||||
|
||||
# Distro
|
||||
|
||||
|
||||
# Shorten the output of the distro function
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'tiny', 'off'
|
||||
# Flag: --distro_shorthand
|
||||
# Supports: Everything except Windows and Haiku
|
||||
distro_shorthand="off"
|
||||
|
||||
# Show/Hide OS Architecture.
|
||||
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --os_arch
|
||||
#
|
||||
# Example:
|
||||
# on: 'Arch Linux x86_64'
|
||||
# off: 'Arch Linux'
|
||||
os_arch="on"
|
||||
|
||||
|
||||
# Uptime
|
||||
|
||||
|
||||
# Shorten the output of the uptime function
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'tiny', 'off'
|
||||
# Flag: --uptime_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: '2 days, 10 hours, 3 mins'
|
||||
# tiny: '2d 10h 3m'
|
||||
# off: '2 days, 10 hours, 3 minutes'
|
||||
uptime_shorthand="on"
|
||||
|
||||
|
||||
# Memory
|
||||
|
||||
|
||||
# Show memory pecentage in output.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --memory_percent
|
||||
#
|
||||
# Example:
|
||||
# on: '1801MiB / 7881MiB (22%)'
|
||||
# off: '1801MiB / 7881MiB'
|
||||
memory_percent="off"
|
||||
|
||||
# Change memory output unit.
|
||||
#
|
||||
# Default: 'mib'
|
||||
# Values: 'kib', 'mib', 'gib'
|
||||
# Flag: --memory_unit
|
||||
#
|
||||
# Example:
|
||||
# kib '1020928KiB / 7117824KiB'
|
||||
# mib '1042MiB / 6951MiB'
|
||||
# gib: ' 0.98GiB / 6.79GiB'
|
||||
memory_unit="mib"
|
||||
|
||||
|
||||
# Packages
|
||||
|
||||
|
||||
# Show/Hide Package Manager names.
|
||||
#
|
||||
# Default: 'tiny'
|
||||
# Values: 'on', 'tiny' 'off'
|
||||
# Flag: --package_managers
|
||||
#
|
||||
# Example:
|
||||
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
|
||||
# tiny: '908 (pacman, flatpak, snap)'
|
||||
# off: '908'
|
||||
package_managers="on"
|
||||
|
||||
|
||||
# Shell
|
||||
|
||||
|
||||
# Show the path to $SHELL
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --shell_path
|
||||
#
|
||||
# Example:
|
||||
# on: '/bin/bash'
|
||||
# off: 'bash'
|
||||
shell_path="off"
|
||||
|
||||
# Show $SHELL version
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --shell_version
|
||||
#
|
||||
# Example:
|
||||
# on: 'bash 4.4.5'
|
||||
# off: 'bash'
|
||||
shell_version="on"
|
||||
|
||||
|
||||
# CPU
|
||||
|
||||
|
||||
# CPU speed type
|
||||
#
|
||||
# Default: 'bios_limit'
|
||||
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
|
||||
# Flag: --speed_type
|
||||
# Supports: Linux with 'cpufreq'
|
||||
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
|
||||
speed_type="bios_limit"
|
||||
|
||||
# CPU speed shorthand
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'.
|
||||
# Flag: --speed_shorthand
|
||||
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
|
||||
#
|
||||
# Example:
|
||||
# on: 'i7-6500U (4) @ 3.1GHz'
|
||||
# off: 'i7-6500U (4) @ 3.100GHz'
|
||||
speed_shorthand="off"
|
||||
|
||||
# Enable/Disable CPU brand in output.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --cpu_brand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Intel i7-6500U'
|
||||
# off: 'i7-6500U (4)'
|
||||
cpu_brand="on"
|
||||
|
||||
# CPU Speed
|
||||
# Hide/Show CPU speed.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --cpu_speed
|
||||
#
|
||||
# Example:
|
||||
# on: 'Intel i7-6500U (4) @ 3.1GHz'
|
||||
# off: 'Intel i7-6500U (4)'
|
||||
cpu_speed="on"
|
||||
|
||||
# CPU Cores
|
||||
# Display CPU cores in output
|
||||
#
|
||||
# Default: 'logical'
|
||||
# Values: 'logical', 'physical', 'off'
|
||||
# Flag: --cpu_cores
|
||||
# Support: 'physical' doesn't work on BSD.
|
||||
#
|
||||
# Example:
|
||||
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
|
||||
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
|
||||
# off: 'Intel i7-6500U @ 3.1GHz'
|
||||
cpu_cores="logical"
|
||||
|
||||
# CPU Temperature
|
||||
# Hide/Show CPU temperature.
|
||||
# Note the temperature is added to the regular CPU function.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'C', 'F', 'off'
|
||||
# Flag: --cpu_temp
|
||||
# Supports: Linux, BSD
|
||||
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
|
||||
# coretemp kernel module. This only supports newer Intel processors.
|
||||
#
|
||||
# Example:
|
||||
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
|
||||
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
|
||||
# off: 'Intel i7-6500U (4) @ 3.1GHz'
|
||||
cpu_temp="off"
|
||||
|
||||
|
||||
# GPU
|
||||
|
||||
|
||||
# Enable/Disable GPU Brand
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gpu_brand
|
||||
#
|
||||
# Example:
|
||||
# on: 'AMD HD 7950'
|
||||
# off: 'HD 7950'
|
||||
gpu_brand="on"
|
||||
|
||||
# Which GPU to display
|
||||
#
|
||||
# Default: 'all'
|
||||
# Values: 'all', 'dedicated', 'integrated'
|
||||
# Flag: --gpu_type
|
||||
# Supports: Linux
|
||||
#
|
||||
# Example:
|
||||
# all:
|
||||
# GPU1: AMD HD 7950
|
||||
# GPU2: Intel Integrated Graphics
|
||||
#
|
||||
# dedicated:
|
||||
# GPU1: AMD HD 7950
|
||||
#
|
||||
# integrated:
|
||||
# GPU1: Intel Integrated Graphics
|
||||
gpu_type="all"
|
||||
|
||||
|
||||
# Resolution
|
||||
|
||||
|
||||
# Display refresh rate next to each monitor
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --refresh_rate
|
||||
# Supports: Doesn't work on Windows.
|
||||
#
|
||||
# Example:
|
||||
# on: '1920x1080 @ 60Hz'
|
||||
# off: '1920x1080'
|
||||
refresh_rate="off"
|
||||
|
||||
|
||||
# Gtk Theme / Icons / Font
|
||||
|
||||
|
||||
# Shorten output of GTK Theme / Icons / Font
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix, Adwaita'
|
||||
# off: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
gtk_shorthand="off"
|
||||
|
||||
|
||||
# Enable/Disable gtk2 Theme / Icons / Font
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk2
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
# off: 'Adwaita [GTK3]'
|
||||
gtk2="on"
|
||||
|
||||
# Enable/Disable gtk3 Theme / Icons / Font
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --gtk3
|
||||
#
|
||||
# Example:
|
||||
# on: 'Numix [GTK2], Adwaita [GTK3]'
|
||||
# off: 'Numix [GTK2]'
|
||||
gtk3="on"
|
||||
|
||||
|
||||
# IP Address
|
||||
|
||||
|
||||
# Website to ping for the public IP
|
||||
#
|
||||
# Default: 'http://ident.me'
|
||||
# Values: 'url'
|
||||
# Flag: --ip_host
|
||||
public_ip_host="http://ident.me"
|
||||
|
||||
# Public IP timeout.
|
||||
#
|
||||
# Default: '2'
|
||||
# Values: 'int'
|
||||
# Flag: --ip_timeout
|
||||
public_ip_timeout=2
|
||||
|
||||
|
||||
# Desktop Environment
|
||||
|
||||
|
||||
# Show Desktop Environment version
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --de_version
|
||||
de_version="on"
|
||||
|
||||
|
||||
# Disk
|
||||
|
||||
|
||||
# Which disks to display.
|
||||
# The values can be any /dev/sdXX, mount point or directory.
|
||||
# NOTE: By default we only show the disk info for '/'.
|
||||
#
|
||||
# Default: '/'
|
||||
# Values: '/', '/dev/sdXX', '/path/to/drive'.
|
||||
# Flag: --disk_show
|
||||
#
|
||||
# Example:
|
||||
# disk_show=('/' '/dev/sdb1'):
|
||||
# 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
|
||||
#
|
||||
# disk_show=('/'):
|
||||
# 'Disk (/): 74G / 118G (66%)'
|
||||
#
|
||||
disk_show=('/')
|
||||
|
||||
# Disk subtitle.
|
||||
# What to append to the Disk subtitle.
|
||||
#
|
||||
# Default: 'mount'
|
||||
# Values: 'mount', 'name', 'dir', 'none'
|
||||
# Flag: --disk_subtitle
|
||||
#
|
||||
# Example:
|
||||
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
|
||||
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
|
||||
#
|
||||
# mount: 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
|
||||
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
|
||||
#
|
||||
# dir: 'Disk (/): 74G / 118G (66%)'
|
||||
# 'Disk (Local Disk): 74G / 118G (66%)'
|
||||
# 'Disk (Videos): 74G / 118G (66%)'
|
||||
#
|
||||
# none: 'Disk: 74G / 118G (66%)'
|
||||
# 'Disk: 74G / 118G (66%)'
|
||||
# 'Disk: 74G / 118G (66%)'
|
||||
disk_subtitle="mount"
|
||||
|
||||
# Disk percent.
|
||||
# Show/Hide disk percent.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --disk_percent
|
||||
#
|
||||
# Example:
|
||||
# on: 'Disk (/): 74G / 118G (66%)'
|
||||
# off: 'Disk (/): 74G / 118G'
|
||||
disk_percent="on"
|
||||
|
||||
|
||||
# Song
|
||||
|
||||
|
||||
# Manually specify a music player.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'player-name'
|
||||
# Flag: --music_player
|
||||
#
|
||||
# Available values for 'player-name':
|
||||
#
|
||||
# amarok
|
||||
# audacious
|
||||
# banshee
|
||||
# bluemindo
|
||||
# clementine
|
||||
# cmus
|
||||
# deadbeef
|
||||
# deepin-music
|
||||
# dragon
|
||||
# elisa
|
||||
# exaile
|
||||
# gnome-music
|
||||
# gmusicbrowser
|
||||
# gogglesmm
|
||||
# guayadeque
|
||||
# io.elementary.music
|
||||
# iTunes
|
||||
# juk
|
||||
# lollypop
|
||||
# mocp
|
||||
# mopidy
|
||||
# mpd
|
||||
# muine
|
||||
# netease-cloud-music
|
||||
# olivia
|
||||
# playerctl
|
||||
# pogo
|
||||
# pragha
|
||||
# qmmp
|
||||
# quodlibet
|
||||
# rhythmbox
|
||||
# sayonara
|
||||
# smplayer
|
||||
# spotify
|
||||
# strawberry
|
||||
# tauonmb
|
||||
# tomahawk
|
||||
# vlc
|
||||
# xmms2d
|
||||
# xnoise
|
||||
# yarock
|
||||
music_player="auto"
|
||||
|
||||
# Format to display song information.
|
||||
#
|
||||
# Default: '%artist% - %album% - %title%'
|
||||
# Values: '%artist%', '%album%', '%title%'
|
||||
# Flag: --song_format
|
||||
#
|
||||
# Example:
|
||||
# default: 'Song: Jet - Get Born - Sgt Major'
|
||||
song_format="%artist% - %album% - %title%"
|
||||
|
||||
# Print the Artist, Album and Title on separate lines
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --song_shorthand
|
||||
#
|
||||
# Example:
|
||||
# on: 'Artist: The Fratellis'
|
||||
# 'Album: Costello Music'
|
||||
# 'Song: Chelsea Dagger'
|
||||
#
|
||||
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
|
||||
song_shorthand="off"
|
||||
|
||||
# 'mpc' arguments (specify a host, password etc).
|
||||
#
|
||||
# Default: ''
|
||||
# Example: mpc_args=(-h HOST -P PASSWORD)
|
||||
mpc_args=()
|
||||
|
||||
|
||||
# Text Colors
|
||||
|
||||
|
||||
# Text Colors
|
||||
#
|
||||
# Default: 'distro'
|
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
||||
# Flag: --colors
|
||||
#
|
||||
# Each number represents a different part of the text in
|
||||
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
|
||||
#
|
||||
# Example:
|
||||
# colors=(distro) - Text is colored based on Distro colors.
|
||||
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
|
||||
colors=(distro)
|
||||
|
||||
|
||||
# Text Options
|
||||
|
||||
|
||||
# Toggle bold text
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --bold
|
||||
bold="on"
|
||||
|
||||
# Enable/Disable Underline
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --underline
|
||||
underline_enabled="on"
|
||||
|
||||
# Underline character
|
||||
#
|
||||
# Default: '-'
|
||||
# Values: 'string'
|
||||
# Flag: --underline_char
|
||||
underline_char="-"
|
||||
|
||||
|
||||
# Info Separator
|
||||
# Replace the default separator with the specified string.
|
||||
#
|
||||
# Default: ':'
|
||||
# Flag: --separator
|
||||
#
|
||||
# Example:
|
||||
# separator="->": 'Shell-> bash'
|
||||
# separator=" =": 'WM = dwm'
|
||||
separator=":"
|
||||
|
||||
|
||||
# Color Blocks
|
||||
|
||||
|
||||
# Color block range
|
||||
# The range of colors to print.
|
||||
#
|
||||
# Default: '0', '15'
|
||||
# Values: 'num'
|
||||
# Flag: --block_range
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# Display colors 0-7 in the blocks. (8 colors)
|
||||
# neofetch --block_range 0 7
|
||||
#
|
||||
# Display colors 0-15 in the blocks. (16 colors)
|
||||
# neofetch --block_range 0 15
|
||||
block_range=(0 15)
|
||||
|
||||
# Toggle color blocks
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --color_blocks
|
||||
color_blocks="on"
|
||||
|
||||
# Color block width in spaces
|
||||
#
|
||||
# Default: '3'
|
||||
# Values: 'num'
|
||||
# Flag: --block_width
|
||||
block_width=3
|
||||
|
||||
# Color block height in lines
|
||||
#
|
||||
# Default: '1'
|
||||
# Values: 'num'
|
||||
# Flag: --block_height
|
||||
block_height=1
|
||||
|
||||
# Color Alignment
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'num'
|
||||
# Flag: --col_offset
|
||||
#
|
||||
# Number specifies how far from the left side of the terminal (in spaces) to
|
||||
# begin printing the columns, in case you want to e.g. center them under your
|
||||
# text.
|
||||
# Example:
|
||||
# col_offset="auto" - Default behavior of neofetch
|
||||
# col_offset=7 - Leave 7 spaces then print the colors
|
||||
col_offset="auto"
|
||||
|
||||
# Progress Bars
|
||||
|
||||
|
||||
# Bar characters
|
||||
#
|
||||
# Default: '-', '='
|
||||
# Values: 'string', 'string'
|
||||
# Flag: --bar_char
|
||||
#
|
||||
# Example:
|
||||
# neofetch --bar_char 'elapsed' 'total'
|
||||
# neofetch --bar_char '-' '='
|
||||
bar_char_elapsed="-"
|
||||
bar_char_total="="
|
||||
|
||||
# Toggle Bar border
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --bar_border
|
||||
bar_border="on"
|
||||
|
||||
# Progress bar length in spaces
|
||||
# Number of chars long to make the progress bars.
|
||||
#
|
||||
# Default: '15'
|
||||
# Values: 'num'
|
||||
# Flag: --bar_length
|
||||
bar_length=15
|
||||
|
||||
# Progress bar colors
|
||||
# When set to distro, uses your distro's logo colors.
|
||||
#
|
||||
# Default: 'distro', 'distro'
|
||||
# Values: 'distro', 'num'
|
||||
# Flag: --bar_colors
|
||||
#
|
||||
# Example:
|
||||
# neofetch --bar_colors 3 4
|
||||
# neofetch --bar_colors distro 5
|
||||
bar_color_elapsed="distro"
|
||||
bar_color_total="distro"
|
||||
|
||||
|
||||
# Info display
|
||||
# Display a bar with the info.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'bar', 'infobar', 'barinfo', 'off'
|
||||
# Flags: --cpu_display
|
||||
# --memory_display
|
||||
# --battery_display
|
||||
# --disk_display
|
||||
#
|
||||
# Example:
|
||||
# bar: '[---=======]'
|
||||
# infobar: 'info [---=======]'
|
||||
# barinfo: '[---=======] info'
|
||||
# off: 'info'
|
||||
cpu_display="off"
|
||||
memory_display="off"
|
||||
battery_display="off"
|
||||
disk_display="off"
|
||||
|
||||
|
||||
# Backend Settings
|
||||
|
||||
|
||||
# Image backend.
|
||||
#
|
||||
# Default: 'ascii'
|
||||
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
|
||||
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
|
||||
# Flag: --backend
|
||||
#image_backend="ascii"
|
||||
image_backend="chafa"
|
||||
|
||||
# Image Source
|
||||
#
|
||||
# Which image or ascii file to display.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
|
||||
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
|
||||
# Flag: --source
|
||||
#
|
||||
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
|
||||
# In ascii mode, distro ascii art will be used and in an image mode, your
|
||||
# wallpaper will be used.
|
||||
image_source="wallpaper"
|
||||
|
||||
|
||||
# Ascii Options
|
||||
|
||||
|
||||
# Ascii distro
|
||||
# Which distro's ascii art to display.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', 'distro_name'
|
||||
# Flag: --ascii_distro
|
||||
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
|
||||
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
|
||||
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
|
||||
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
|
||||
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
|
||||
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
|
||||
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
|
||||
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
|
||||
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
|
||||
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
|
||||
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
|
||||
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
|
||||
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
|
||||
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
|
||||
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
|
||||
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
|
||||
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
|
||||
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
|
||||
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
|
||||
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
|
||||
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
|
||||
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
|
||||
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
|
||||
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
|
||||
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
|
||||
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
|
||||
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
|
||||
# and IRIX have ascii logos
|
||||
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
|
||||
# Use '{distro name}_old' to use the old logos.
|
||||
# NOTE: Ubuntu has flavor variants.
|
||||
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
|
||||
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
|
||||
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
|
||||
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
|
||||
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
|
||||
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
|
||||
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
|
||||
# postmarketOS, and Void have a smaller logo variant.
|
||||
# Use '{distro name}_small' to use the small variants.
|
||||
ascii_distro="auto"
|
||||
|
||||
# Ascii Colors
|
||||
#
|
||||
# Default: 'distro'
|
||||
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
|
||||
# Flag: --ascii_colors
|
||||
#
|
||||
# Example:
|
||||
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
|
||||
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
|
||||
ascii_colors=(distro)
|
||||
|
||||
# Bold ascii logo
|
||||
# Whether or not to bold the ascii logo.
|
||||
#
|
||||
# Default: 'on'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --ascii_bold
|
||||
ascii_bold="on"
|
||||
|
||||
|
||||
# Image Options
|
||||
|
||||
|
||||
# Image loop
|
||||
# Setting this to on will make neofetch redraw the image constantly until
|
||||
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
|
||||
#
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
# Flag: --loop
|
||||
image_loop="off"
|
||||
|
||||
# Thumbnail directory
|
||||
#
|
||||
# Default: '~/.cache/thumbnails/neofetch'
|
||||
# Values: 'dir'
|
||||
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
|
||||
|
||||
# Crop mode
|
||||
#
|
||||
# Default: 'normal'
|
||||
# Values: 'normal', 'fit', 'fill'
|
||||
# Flag: --crop_mode
|
||||
#
|
||||
# See this wiki page to learn about the fit and fill options.
|
||||
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
|
||||
crop_mode="normal"
|
||||
|
||||
# Crop offset
|
||||
# Note: Only affects 'normal' crop mode.
|
||||
#
|
||||
# Default: 'center'
|
||||
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
|
||||
# 'east', 'southwest', 'south', 'southeast'
|
||||
# Flag: --crop_offset
|
||||
crop_offset="center"
|
||||
|
||||
# Image size
|
||||
# The image is half the terminal width by default.
|
||||
#
|
||||
# Default: 'auto'
|
||||
# Values: 'auto', '00px', '00%', 'none'
|
||||
# Flags: --image_size
|
||||
# --size
|
||||
image_size="auto"
|
||||
|
||||
# Gap between image and text
|
||||
#
|
||||
# Default: '3'
|
||||
# Values: 'num', '-num'
|
||||
# Flag: --gap
|
||||
gap=3
|
||||
|
||||
# Image offsets
|
||||
# Only works with the w3m backend.
|
||||
#
|
||||
# Default: '0'
|
||||
# Values: 'px'
|
||||
# Flags: --xoffset
|
||||
# --yoffset
|
||||
yoffset=0
|
||||
xoffset=0
|
||||
|
||||
# Image background color
|
||||
# Only works with the w3m backend.
|
||||
#
|
||||
# Default: ''
|
||||
# Values: 'color', 'blue'
|
||||
# Flag: --bg_color
|
||||
background_color=
|
||||
|
||||
|
||||
# Misc Options
|
||||
|
||||
# Stdout mode
|
||||
# Turn off all colors and disables image backend (ASCII/Image).
|
||||
# Useful for piping into another command.
|
||||
# Default: 'off'
|
||||
# Values: 'on', 'off'
|
||||
stdout="off"
|
3
.config/nvim/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Vilyaem's Neovim
|
||||
This is my NeoVim configuration, I've greatly simplified it from the
|
||||
NVChad nonsense I was using for a while.
|
243
.config/nvim/init.lua
Normal file
|
@ -0,0 +1,243 @@
|
|||
--[[---------------------------------------------
|
||||
- Description - Vilyaem's Neovim Configuration
|
||||
- Author - Vilyaem
|
||||
- -------------------------------------------]]
|
||||
|
||||
vim.g.mapleader = " "
|
||||
|
||||
|
||||
--Vilyaem's Settings
|
||||
vim.opt.autoindent = true
|
||||
vim.opt.backspace = { 'indent', 'eol', 'start' }
|
||||
vim.opt.encoding = 'utf-8'
|
||||
vim.opt.expandtab = true
|
||||
vim.opt.lazyredraw = true
|
||||
vim.opt.list = true
|
||||
vim.opt.listchars = { tab = '>.' }
|
||||
vim.opt.mouse = 'a'
|
||||
vim.opt.swapfile = false
|
||||
vim.opt.number = true
|
||||
vim.opt.relativenumber = true
|
||||
vim.opt.spelllang = 'en_gb'
|
||||
vim.opt.shiftwidth = 2
|
||||
vim.opt.viminfo = ''
|
||||
vim.opt.history = 1000
|
||||
|
||||
--Colouring
|
||||
vim.cmd("highlight Comment guifg=NONE ")
|
||||
vim.cmd("highlight @comment guifg=NONE ")
|
||||
vim.api.nvim_set_hl(0,"Normal",{bg = "none"})
|
||||
vim.api.nvim_set_hl(0,"NormalFloat",{bg = "none"})
|
||||
|
||||
--Enable King's English Spell Checking
|
||||
vim.opt.spelllang = 'en_gb'
|
||||
vim.opt.spell = true
|
||||
|
||||
-- Easy search and replace
|
||||
vim.api.nvim_set_keymap('n', 'S', ':%s///g<Left><Left><Left>', { noremap = true })
|
||||
vim.api.nvim_set_keymap('v', 'S', ':s///g<Left><Left><Left>', { noremap = true })
|
||||
|
||||
-- Easy save
|
||||
vim.api.nvim_set_keymap('n', 'W', ':w<CR>', { noremap = true })
|
||||
|
||||
-- Function or File heading
|
||||
function FileHeading()
|
||||
local line = vim.fn.line(".")
|
||||
vim.fn.setline(line, "/*********************************************")
|
||||
vim.fn.append(line, "* Description - ")
|
||||
vim.fn.append(line + 1, "* Author - Vilyaem")
|
||||
vim.fn.append(line + 2, "* *******************************************/")
|
||||
end
|
||||
vim.api.nvim_set_keymap('i', '<F4>', '<Esc>:lua FileHeading()<CR>g;kkA', { noremap = true })
|
||||
|
||||
-- Section
|
||||
vim.api.nvim_set_keymap('i', '<F3>', '<Esc>I/*----------!----------*/<Esc>/!<CR>?<CR>xi', { noremap = true })
|
||||
|
||||
--F6 talk to the soybot
|
||||
vim.api.nvim_set_keymap("n","<F6>","<Esc>:Gen<CR>",{noremap = true, silent = true})
|
||||
|
||||
-- Set the key mappings for the GDB commands
|
||||
vim.keymap.set("n", "<leader>db", "<cmd>GdbStart<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>dc", "<cmd>GdbContinue<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>dn", "<cmd>GdbNext<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>ds", "<cmd>GdbStep<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>di", "<cmd>GdbStepInto<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>do", "<cmd>GdbStepOut<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>db", "<cmd>GdbBreakpoint<cr>", { noremap = true, silent = true })
|
||||
vim.keymap.set("n", "<leader>dw", "<cmd>GdbWatch<cr>", { noremap = true, silent = true })
|
||||
|
||||
--Calculate expression plugin
|
||||
vim.api.nvim_create_user_command("Calculate", "lua require(\"calculator\").calculate()",
|
||||
{ ["range"] = 1, ["nargs"] = 0 })
|
||||
|
||||
--Setup packer
|
||||
-- Install packer.nvim for plugin management
|
||||
local function bootstrap_packer()
|
||||
local fn = vim.fn
|
||||
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
|
||||
if fn.empty(fn.glob(install_path)) > 0 then
|
||||
fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
||||
vim.cmd('packadd packer.nvim')
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
local packer_bootstrap = bootstrap_packer()
|
||||
|
||||
-- Use packer to manage plugins
|
||||
require('packer').startup(function(use)
|
||||
use 'wbthomason/packer.nvim' -- Package manager
|
||||
|
||||
use{"L3MON4D3/LuaSnip"}
|
||||
use{"vzze/calculator.nvim"}
|
||||
use{"hrsh7th/nvim-cmp"}
|
||||
use{"hrsh7th/cmp-buffer"}
|
||||
use{"hrsh7th/cmp-nvim-lsp"}
|
||||
use{"hrsh7th/cmp-nvim-lua"}
|
||||
use{"hrsh7th/cmp-path"}
|
||||
use{"saadparwaiz1/cmp_luasnip"}
|
||||
use{"stevearc/conform.nvim"}
|
||||
use{"rafamadriz/friendly-snippets"}
|
||||
use{"David-Kunz/gen.nvim"}
|
||||
use{"lewis6991/gitsigns.nvim"}
|
||||
use{"lukas-reineke/indent-blankline.nvim"}
|
||||
use{"williamboman/mason.nvim"}
|
||||
use{"williamboman/mason-lspconfig.nvim"}
|
||||
use{"windwp/nvim-autopairs"}
|
||||
use{"sakhnik/nvim-gdb"}
|
||||
use{"neovim/nvim-lspconfig"}
|
||||
use{"nvim-tree/nvim-tree.lua"}
|
||||
use{"nvim-treesitter/nvim-treesitter"}
|
||||
use{"nvim-lua/plenary.nvim"}
|
||||
use{"nvim-telescope/telescope.nvim"}
|
||||
use{"ThePrimeagen/vim-be-good"}
|
||||
use{"folke/which-key.nvim"}
|
||||
|
||||
if packer_bootstrap then
|
||||
require('packer').sync()
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
-- Setup installed packages
|
||||
require("nvim-tree").setup()
|
||||
require("mason").setup()
|
||||
require("telescope").setup{}
|
||||
|
||||
|
||||
-- LSP
|
||||
vim.api.nvim_create_autocmd('LspAttach', {
|
||||
desc = 'LSP actions',
|
||||
callback = function(event)
|
||||
local opts = {buffer = event.buf}
|
||||
-- these will be buffer-local keybindings
|
||||
-- because they only work if you have an active language server
|
||||
vim.keymap.set('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>', opts)
|
||||
vim.keymap.set('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>', opts)
|
||||
vim.keymap.set('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>', opts)
|
||||
vim.keymap.set('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<cr>', opts)
|
||||
vim.keymap.set('n', 'go', '<cmd>lua vim.lsp.buf.type_definition()<cr>', opts)
|
||||
vim.keymap.set('n', 'gr', '<cmd>lua vim.lsp.buf.references()<cr>', opts)
|
||||
vim.keymap.set('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>', opts)
|
||||
vim.keymap.set('n', '<F2>', '<cmd>lua vim.lsp.buf.rename()<cr>', opts)
|
||||
vim.keymap.set({'n', 'x'}, '<F3>', '<cmd>lua vim.lsp.buf.format({async = true})<cr>', opts)
|
||||
vim.keymap.set('n', '<F4>', '<cmd>lua vim.lsp.buf.code_action()<cr>', opts)
|
||||
end
|
||||
})
|
||||
|
||||
local lsp_capabilities = require('cmp_nvim_lsp').default_capabilities()
|
||||
|
||||
require('mason').setup({})
|
||||
require('mason-lspconfig').setup({
|
||||
ensure_installed = {},
|
||||
handlers = {
|
||||
function(clangd)
|
||||
require('lspconfig').clangd.setup({
|
||||
capabilities = lsp_capabilities,
|
||||
})
|
||||
end,
|
||||
},
|
||||
})
|
||||
|
||||
local cmp = require('cmp')
|
||||
|
||||
cmp.setup({
|
||||
sources = {
|
||||
{name = 'nvim_lsp'},
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
-- Enter key confirms completion item
|
||||
['<CR>'] = cmp.mapping.confirm({select = false}),
|
||||
-- Ctrl + space triggers completion menu
|
||||
['<C-Space>'] = cmp.mapping.complete(),
|
||||
}),
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
require('luasnip').lsp_expand(args.body)
|
||||
end,
|
||||
},
|
||||
})
|
||||
|
||||
-- Set package keybindings
|
||||
|
||||
local map = vim.keymap.set
|
||||
map("i", "<C-b>", "<ESC>^i", { desc = "move beginning of line" })
|
||||
map("i", "<C-e>", "<End>", { desc = "move end of line" })
|
||||
map("i", "<C-h>", "<Left>", { desc = "move left" })
|
||||
map("i", "<C-l>", "<Right>", { desc = "move right" })
|
||||
map("i", "<C-j>", "<Down>", { desc = "move down" })
|
||||
map("i", "<C-k>", "<Up>", { desc = "move up" })
|
||||
map("n", "<C-h>", "<C-w>h", { desc = "switch window left" })
|
||||
map("n", "<C-l>", "<C-w>l", { desc = "switch window right" })
|
||||
map("n", "<C-j>", "<C-w>j", { desc = "switch window down" })
|
||||
map("n", "<C-k>", "<C-w>k", { desc = "switch window up" })
|
||||
map("n", "<Esc>", "<cmd>noh<CR>", { desc = "general clear highlights" })
|
||||
map("n", "<C-s>", "<cmd>w<CR>", { desc = "general save file" })
|
||||
map("n", "<C-c>", "<cmd>%y+<CR>", { desc = "general copy whole file" })
|
||||
|
||||
-- Key mappings for tab navigation
|
||||
vim.api.nvim_set_keymap('n', '<Tab>', ':tabnext<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<S-Tab>', ':tabprevious<CR>', { noremap = true, silent = true })
|
||||
|
||||
-- Key mappings for closing and creating tabs
|
||||
vim.api.nvim_set_keymap('n', '<leader>x', ':tabclose<CR>', { noremap = true, silent = true })
|
||||
vim.api.nvim_set_keymap('n', '<leader>b', ':tabnew<CR>', { noremap = true, silent = true })
|
||||
|
||||
-- Ensure new files opened from Nvim Tree open in new tabs
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
pattern = "*",
|
||||
callback = function()
|
||||
if vim.fn.winnr('$') == 1 and vim.bo.filetype == 'NvimTree' then
|
||||
vim.cmd('tabnew')
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
-- Comment
|
||||
map("n", "<leader>/", "gcc", { desc = "toggle comment", remap = true })
|
||||
map("v", "<leader>/", "gc", { desc = "toggle comment", remap = true })
|
||||
|
||||
-- nvimtree
|
||||
map("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "nvimtree toggle window" })
|
||||
map("n", "<leader>e", "<cmd>NvimTreeFocus<CR>", { desc = "nvimtree focus window" })
|
||||
|
||||
-- telescope
|
||||
map("n", "<leader>fw", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" })
|
||||
map("n", "<leader>fb", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" })
|
||||
map("n", "<leader>fh", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" })
|
||||
map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" })
|
||||
map("n", "<leader>fo", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" })
|
||||
map("n", "<leader>fz", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" })
|
||||
map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" })
|
||||
map("n", "<leader>gt", "<cmd>Telescope git_status<CR>", { desc = "telescope git status" })
|
||||
map("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" })
|
||||
|
||||
|
||||
map("n", "<leader>ff", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" })
|
||||
map(
|
||||
"n",
|
||||
"<leader>fa",
|
||||
"<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>",
|
||||
{ desc = "telescope find all files" }
|
||||
)
|
224
.config/nvim/plugin/packer_compiled.lua
Normal file
|
@ -0,0 +1,224 @@
|
|||
-- Automatically generated packer.nvim plugin loader code
|
||||
|
||||
if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
|
||||
vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
|
||||
return
|
||||
end
|
||||
|
||||
vim.api.nvim_command('packadd packer.nvim')
|
||||
|
||||
local no_errors, error_msg = pcall(function()
|
||||
|
||||
_G._packer = _G._packer or {}
|
||||
_G._packer.inside_compile = true
|
||||
|
||||
local time
|
||||
local profile_info
|
||||
local should_profile = false
|
||||
if should_profile then
|
||||
local hrtime = vim.loop.hrtime
|
||||
profile_info = {}
|
||||
time = function(chunk, start)
|
||||
if start then
|
||||
profile_info[chunk] = hrtime()
|
||||
else
|
||||
profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
|
||||
end
|
||||
end
|
||||
else
|
||||
time = function(chunk, start) end
|
||||
end
|
||||
|
||||
local function save_profiles(threshold)
|
||||
local sorted_times = {}
|
||||
for chunk_name, time_taken in pairs(profile_info) do
|
||||
sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
|
||||
end
|
||||
table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
|
||||
local results = {}
|
||||
for i, elem in ipairs(sorted_times) do
|
||||
if not threshold or threshold and elem[2] > threshold then
|
||||
results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
|
||||
end
|
||||
end
|
||||
if threshold then
|
||||
table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)')
|
||||
end
|
||||
|
||||
_G._packer.profile_output = results
|
||||
end
|
||||
|
||||
time([[Luarocks path setup]], true)
|
||||
local package_path_str = "/home/vilyaem/.cache/nvim/packer_hererocks/2.1.1734355927/share/lua/5.1/?.lua;/home/vilyaem/.cache/nvim/packer_hererocks/2.1.1734355927/share/lua/5.1/?/init.lua;/home/vilyaem/.cache/nvim/packer_hererocks/2.1.1734355927/lib/luarocks/rocks-5.1/?.lua;/home/vilyaem/.cache/nvim/packer_hererocks/2.1.1734355927/lib/luarocks/rocks-5.1/?/init.lua"
|
||||
local install_cpath_pattern = "/home/vilyaem/.cache/nvim/packer_hererocks/2.1.1734355927/lib/lua/5.1/?.so"
|
||||
if not string.find(package.path, package_path_str, 1, true) then
|
||||
package.path = package.path .. ';' .. package_path_str
|
||||
end
|
||||
|
||||
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
|
||||
package.cpath = package.cpath .. ';' .. install_cpath_pattern
|
||||
end
|
||||
|
||||
time([[Luarocks path setup]], false)
|
||||
time([[try_loadstring definition]], true)
|
||||
local function try_loadstring(s, component, name)
|
||||
local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
|
||||
if not success then
|
||||
vim.schedule(function()
|
||||
vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
|
||||
end)
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
time([[try_loadstring definition]], false)
|
||||
time([[Defining packer_plugins]], true)
|
||||
_G.packer_plugins = {
|
||||
LuaSnip = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/LuaSnip",
|
||||
url = "https://github.com/L3MON4D3/LuaSnip"
|
||||
},
|
||||
["calculator.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/calculator.nvim",
|
||||
url = "https://github.com/vzze/calculator.nvim"
|
||||
},
|
||||
["cmp-buffer"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/cmp-buffer",
|
||||
url = "https://github.com/hrsh7th/cmp-buffer"
|
||||
},
|
||||
["cmp-nvim-lsp"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp",
|
||||
url = "https://github.com/hrsh7th/cmp-nvim-lsp"
|
||||
},
|
||||
["cmp-nvim-lua"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua",
|
||||
url = "https://github.com/hrsh7th/cmp-nvim-lua"
|
||||
},
|
||||
["cmp-path"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/cmp-path",
|
||||
url = "https://github.com/hrsh7th/cmp-path"
|
||||
},
|
||||
cmp_luasnip = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/cmp_luasnip",
|
||||
url = "https://github.com/saadparwaiz1/cmp_luasnip"
|
||||
},
|
||||
["conform.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/conform.nvim",
|
||||
url = "https://github.com/stevearc/conform.nvim"
|
||||
},
|
||||
["friendly-snippets"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/friendly-snippets",
|
||||
url = "https://github.com/rafamadriz/friendly-snippets"
|
||||
},
|
||||
["gen.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/gen.nvim",
|
||||
url = "https://github.com/David-Kunz/gen.nvim"
|
||||
},
|
||||
["gitsigns.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/gitsigns.nvim",
|
||||
url = "https://github.com/lewis6991/gitsigns.nvim"
|
||||
},
|
||||
["indent-blankline.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim",
|
||||
url = "https://github.com/lukas-reineke/indent-blankline.nvim"
|
||||
},
|
||||
["mason-lspconfig.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim",
|
||||
url = "https://github.com/williamboman/mason-lspconfig.nvim"
|
||||
},
|
||||
["mason.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/mason.nvim",
|
||||
url = "https://github.com/williamboman/mason.nvim"
|
||||
},
|
||||
["nvim-autopairs"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/nvim-autopairs",
|
||||
url = "https://github.com/windwp/nvim-autopairs"
|
||||
},
|
||||
["nvim-cmp"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/nvim-cmp",
|
||||
url = "https://github.com/hrsh7th/nvim-cmp"
|
||||
},
|
||||
["nvim-gdb"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/nvim-gdb",
|
||||
url = "https://github.com/sakhnik/nvim-gdb"
|
||||
},
|
||||
["nvim-lspconfig"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/nvim-lspconfig",
|
||||
url = "https://github.com/neovim/nvim-lspconfig"
|
||||
},
|
||||
["nvim-tree.lua"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",
|
||||
url = "https://github.com/nvim-tree/nvim-tree.lua"
|
||||
},
|
||||
["nvim-treesitter"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/nvim-treesitter",
|
||||
url = "https://github.com/nvim-treesitter/nvim-treesitter"
|
||||
},
|
||||
["packer.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/packer.nvim",
|
||||
url = "https://github.com/wbthomason/packer.nvim"
|
||||
},
|
||||
["plenary.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/plenary.nvim",
|
||||
url = "https://github.com/nvim-lua/plenary.nvim"
|
||||
},
|
||||
["telescope.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/telescope.nvim",
|
||||
url = "https://github.com/nvim-telescope/telescope.nvim"
|
||||
},
|
||||
ui = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/ui",
|
||||
url = "https://github.com/NvChad/ui"
|
||||
},
|
||||
["vim-be-good"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/vim-be-good",
|
||||
url = "https://github.com/ThePrimeagen/vim-be-good"
|
||||
},
|
||||
["which-key.nvim"] = {
|
||||
loaded = true,
|
||||
path = "/home/vilyaem/.local/share/nvim/site/pack/packer/start/which-key.nvim",
|
||||
url = "https://github.com/folke/which-key.nvim"
|
||||
}
|
||||
}
|
||||
|
||||
time([[Defining packer_plugins]], false)
|
||||
|
||||
_G._packer.inside_compile = false
|
||||
if _G._packer.needs_bufread == true then
|
||||
vim.cmd("doautocmd BufRead")
|
||||
end
|
||||
_G._packer.needs_bufread = false
|
||||
|
||||
if should_profile then save_profiles() end
|
||||
|
||||
end)
|
||||
|
||||
if not no_errors then
|
||||
error_msg = error_msg:gsub('"', '\\"')
|
||||
vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
|
||||
end
|
47
.config/qutebrowser/autoconfig.yml
Normal file
|
@ -0,0 +1,47 @@
|
|||
# If a config.py file exists, this file is ignored unless it's explicitly loaded
|
||||
# via config.load_autoconfig(). For more information, see:
|
||||
# https://github.com/qutebrowser/qutebrowser/blob/main/doc/help/configuring.asciidoc#loading-autoconfigyml
|
||||
# DO NOT edit this file by hand, qutebrowser will overwrite it.
|
||||
# Instead, create a config.py - see :help for details.
|
||||
|
||||
config_version: 2
|
||||
settings:
|
||||
bindings.key_mappings:
|
||||
global:
|
||||
<Ctrl-6>: <Ctrl-^>
|
||||
<Ctrl-Enter>: <Ctrl-Return>
|
||||
<Ctrl-I>: <Tab>
|
||||
<Ctrl-J>: <Return>
|
||||
<Ctrl-M>: <Return>
|
||||
<Ctrl-[>: <Escape>
|
||||
<Enter>: <Return>
|
||||
<Shift-Enter>: <Return>
|
||||
<Shift-Return>: <Return>
|
||||
colors.webpage.darkmode.enabled:
|
||||
global: true
|
||||
colors.webpage.darkmode.policy.page:
|
||||
global: smart
|
||||
colors.webpage.preferred_color_scheme:
|
||||
global: dark
|
||||
content.notifications.enabled:
|
||||
https://tmailor.com: false
|
||||
https://www.rexoweb.com: false
|
||||
content.proxy:
|
||||
global: socks://localhost:9050/
|
||||
downloads.location.directory:
|
||||
global: /home/vilyaem/down/
|
||||
fonts.default_family:
|
||||
global: Terminus
|
||||
fonts.web.family.sans_serif:
|
||||
global: Terminus
|
||||
fonts.web.family.serif:
|
||||
global: Terminus
|
||||
hints.chars:
|
||||
global: aoeuidhtns
|
||||
url.default_page:
|
||||
global: file:///home/vilyaem/x/web/homepage/index.html
|
||||
url.searchengines:
|
||||
global:
|
||||
DEFAULT: https://search.cherub.im/?q={}
|
||||
url.start_pages:
|
||||
global: file:///home/vilyaem/x/web/homepage/index.html
|
8
.config/qutebrowser/qsettings/QtProject.conf
Normal file
|
@ -0,0 +1,8 @@
|
|||
[FileDialog]
|
||||
history=file:///home/vilyaem, file:///home/vilyaem/prog/basicrpg3
|
||||
lastVisited=file:///home/vilyaem/prog/basicrpg3
|
||||
qtVersion=6.7.2
|
||||
shortcuts=file:, file:///home/vilyaem
|
||||
sidebarWidth=98
|
||||
treeViewHeader=@ByteArray(\0\0\0\xff\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x1\xec\0\0\0\x4\x1\x1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x64\xff\xff\xff\xff\0\0\0\x81\0\0\0\0\0\0\0\x4\0\0\0\xff\0\0\0\x1\0\0\0\0\0\0\0?\0\0\0\x1\0\0\0\0\0\0\0@\0\0\0\x1\0\0\0\0\0\0\0n\0\0\0\x1\0\0\0\0\0\0\x3\xe8\0\xff\xff\xff\xff\0\0\0\0)
|
||||
viewMode=Detail
|
0
.config/qutebrowser/quickmarks
Normal file
2
.config/readline/.inputrc
Normal file
|
@ -0,0 +1,2 @@
|
|||
set editing-mode vi
|
||||
"\C-l": clear-screen
|
32
.config/screenkey.json
Normal file
|
@ -0,0 +1,32 @@
|
|||
{
|
||||
"no_systray": false,
|
||||
"timeout": 0.0,
|
||||
"recent_thr": 0.1,
|
||||
"compr_cnt": 3,
|
||||
"ignore": [],
|
||||
"position": "fixed",
|
||||
"persist": true,
|
||||
"window": null,
|
||||
"font_desc": "Terminus 10",
|
||||
"font_size": "medium",
|
||||
"font_color": "#9999c1c1f1f1",
|
||||
"bg_color": "black",
|
||||
"opacity": 0.7,
|
||||
"key_mode": "composed",
|
||||
"bak_mode": "baked",
|
||||
"mods_mode": "normal",
|
||||
"mods_only": false,
|
||||
"multiline": false,
|
||||
"vis_shift": false,
|
||||
"vis_space": true,
|
||||
"geometry": [
|
||||
908,
|
||||
22,
|
||||
370,
|
||||
42
|
||||
],
|
||||
"screen": 0,
|
||||
"start_disabled": false,
|
||||
"mouse": true,
|
||||
"button_hide_duration": 1
|
||||
}
|
2
.config/spectrwm/spectrwm.conf
Normal file
|
@ -0,0 +1,2 @@
|
|||
program[term]=st
|
||||
program[lock]=physlock
|
236
.config/sway/config
Normal file
|
@ -0,0 +1,236 @@
|
|||
# Default config for sway
|
||||
#
|
||||
# Copy this to ~/.config/sway/config and edit it to your liking.
|
||||
#
|
||||
# Read `man 5 sway` for a complete reference.
|
||||
exec swaymsg "exec nhkd &"
|
||||
exec swaymsg "exec xbanish &"
|
||||
|
||||
### Variables
|
||||
#
|
||||
# Logo key. Use Mod1 for Alt.
|
||||
set $mod Mod4
|
||||
# Home row direction keys, like vim
|
||||
set $left h
|
||||
set $down j
|
||||
set $up k
|
||||
set $right l
|
||||
# Your preferred terminal emulator
|
||||
set $term st
|
||||
# Your preferred application launcher
|
||||
# Note: pass the final command to swaymsg so that the resulting window can be opened
|
||||
# on the original workspace that the command was run on.
|
||||
set $menu dmenu_path | wmenu | xargs swaymsg exec --
|
||||
|
||||
### Output configuration
|
||||
#
|
||||
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
|
||||
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
output LVDS-1 resolution 1280x720 position 1280,0
|
||||
#
|
||||
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||
|
||||
### Idle configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# exec swayidle -w \
|
||||
# timeout 300 'swaylock -f -c 000000' \
|
||||
# timeout 600 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
|
||||
# before-sleep 'swaylock -f -c 000000'
|
||||
#
|
||||
# This will lock your screen after 300 seconds of inactivity, then turn off
|
||||
# your displays after another 300 seconds, and turn your screens back on when
|
||||
# resumed. It will also lock your screen before your computer goes to sleep.
|
||||
|
||||
### Input configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||
# dwt enabled
|
||||
# tap enabled
|
||||
# natural_scroll enabled
|
||||
# middle_emulation enabled
|
||||
# }
|
||||
#
|
||||
# You can get the names of your inputs by running: swaymsg -t get_inputs
|
||||
# Read `man 5 sway-input` for more information about this section.
|
||||
|
||||
set $mod Mod1
|
||||
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
#
|
||||
# Start a terminal
|
||||
bindsym $mod+Shift+Return exec $term
|
||||
|
||||
# Kill focused window
|
||||
bindsym $mod+Shift+c kill
|
||||
|
||||
# Start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
# Despite the name, also works for non-floating windows.
|
||||
# Change normal to inverse to use left mouse button for resizing and right
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Reload the configuration file
|
||||
bindsym $mod+Shift+r reload
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+$left focus left
|
||||
bindsym $mod+$down focus down
|
||||
bindsym $mod+$up focus up
|
||||
bindsym $mod+$right focus right
|
||||
# Or use $mod+[up|down|left|right]
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# Move the focused window with the same, but add Shift
|
||||
bindsym $mod+Shift+$left move left
|
||||
bindsym $mod+Shift+$down move down
|
||||
bindsym $mod+Shift+$up move up
|
||||
bindsym $mod+Shift+$right move right
|
||||
# Ditto, with arrow keys
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
#
|
||||
# Workspaces:
|
||||
#
|
||||
# Switch to workspace
|
||||
bindsym $mod+1 workspace number 1
|
||||
bindsym $mod+2 workspace number 2
|
||||
bindsym $mod+3 workspace number 3
|
||||
bindsym $mod+4 workspace number 4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
bindsym $mod+8 workspace number 8
|
||||
bindsym $mod+9 workspace number 9
|
||||
bindsym $mod+0 workspace number 10
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number 1
|
||||
bindsym $mod+Shift+2 move container to workspace number 2
|
||||
bindsym $mod+Shift+3 move container to workspace number 3
|
||||
bindsym $mod+Shift+4 move container to workspace number 4
|
||||
bindsym $mod+Shift+5 move container to workspace number 5
|
||||
bindsym $mod+Shift+6 move container to workspace number 6
|
||||
bindsym $mod+Shift+7 move container to workspace number 7
|
||||
bindsym $mod+Shift+8 move container to workspace number 8
|
||||
bindsym $mod+Shift+9 move container to workspace number 9
|
||||
bindsym $mod+Shift+0 move container to workspace number 10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
input * {
|
||||
|
||||
xkb_layout "us"
|
||||
xkb_variant "dvorak"
|
||||
|
||||
# Capslock key should work as escape key
|
||||
# See /usr/share/X11/xkb/rules/xorg.lst for options
|
||||
xkb_options caps:escape
|
||||
|
||||
repeat_delay 250
|
||||
repeat_rate 70
|
||||
}
|
||||
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
#
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
# left will shrink the containers width
|
||||
# right will grow the containers width
|
||||
# up will shrink the containers height
|
||||
# down will grow the containers height
|
||||
bindsym $left resize shrink width 10px
|
||||
bindsym $down resize grow height 10px
|
||||
bindsym $up resize shrink height 10px
|
||||
bindsym $right resize grow width 10px
|
||||
|
||||
# Ditto, with arrow keys
|
||||
bindsym Left resize shrink width 10px
|
||||
bindsym Down resize grow height 10px
|
||||
bindsym Up resize shrink height 10px
|
||||
bindsym Right resize grow width 10px
|
||||
|
||||
# Return to default mode
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
#
|
||||
# Status Bar:
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
position top
|
||||
|
||||
# When the status_command prints a new line to stdout, swaybar updates.
|
||||
# The default just shows the current date and time.
|
||||
status_command while date +'%Y-%m-%d %X'; do sleep 1; done
|
||||
|
||||
colors {
|
||||
statusline #ffffff
|
||||
#background #323232
|
||||
background #000000
|
||||
inactive_workspace #32323200 #32323200 #5c5c5c
|
||||
}
|
||||
}
|
||||
|
||||
include /etc/sway/config.d/*
|
33
.config/tmuxinator/work.yml
Normal file
|
@ -0,0 +1,33 @@
|
|||
# /home/vilyaem/.config/tmuxinator/work.yml
|
||||
|
||||
name: work
|
||||
root: ~/
|
||||
startup_window: sigma
|
||||
startup_pane: 1
|
||||
windows:
|
||||
- sigma:
|
||||
layout: main-horizontal
|
||||
panes:
|
||||
- pmake
|
||||
- twinkle-console
|
||||
- watch -n 1200 remind ~/.local/share/pmakeremind
|
||||
- monitorworld:
|
||||
layout: even-horizontal
|
||||
panes:
|
||||
#For Busybox...
|
||||
#- watch -n 1200 curl "5.9.243.187/?1Qn"
|
||||
#- watch -n 1200 curl "5.9.243.188/XMR"
|
||||
- watch --color -n 1200 curl "wttr.in/?1Qn"
|
||||
- watch --color -n 1200 curl "rate.sx/XMR"
|
||||
- monitorserver:
|
||||
layout: even-horizontal
|
||||
panes:
|
||||
- watch -n 1200 ssh root@novgorod 'tail /var/log/nginx/error.log'
|
||||
- watch -n 1200 ssh root@novgorod 'tail /var/log/nginx/access.log'
|
||||
#- ssh root@novgorod 'top'
|
||||
- soybot:
|
||||
layout: even-horizontal
|
||||
panes:
|
||||
- nvim -c ':Gen'
|
||||
- workshop:
|
||||
layout: horizontal
|
100
.config/vifm/colors/Default.vifm
Normal file
|
@ -0,0 +1,100 @@
|
|||
" You can edit this file by hand.
|
||||
" The " character at the beginning of a line comments out the line.
|
||||
" Blank lines are ignored.
|
||||
|
||||
" The Default color scheme is used for any directory that does not have
|
||||
" a specified scheme and for parts of user interface like menus. A
|
||||
" color scheme set for a base directory will also
|
||||
" be used for the sub directories.
|
||||
|
||||
" The standard ncurses colors are:
|
||||
" Default = -1 = None, can be used for transparency or default color
|
||||
" Black = 0
|
||||
" Red = 1
|
||||
" Green = 2
|
||||
" Yellow = 3
|
||||
" Blue = 4
|
||||
" Magenta = 5
|
||||
" Cyan = 6
|
||||
" White = 7
|
||||
|
||||
" Light versions of colors are also available (they set bold
|
||||
" attribute in terminals with less than 16 colors):
|
||||
" LightBlack
|
||||
" LightRed
|
||||
" LightGreen
|
||||
" LightYellow
|
||||
" LightBlue
|
||||
" LightMagenta
|
||||
" LightCyan
|
||||
" LightWhite
|
||||
|
||||
" Available attributes (some of them can be combined):
|
||||
" bold
|
||||
" underline
|
||||
" reverse or inverse
|
||||
" standout
|
||||
" italic (on unsupported systems becomes reverse)
|
||||
" combine
|
||||
" none
|
||||
|
||||
" Vifm supports 256 colors you can use color numbers 0-255
|
||||
" (requires properly set up terminal: set your TERM environment variable
|
||||
" (directly or using resources) to some color terminal name (e.g.
|
||||
" xterm-256color) from /usr/lib/terminfo/; you can check current number
|
||||
" of colors in your terminal with tput colors command)
|
||||
|
||||
" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color
|
||||
|
||||
highlight clear
|
||||
|
||||
highlight Win cterm=none ctermfg=white ctermbg=black
|
||||
highlight Directory cterm=bold ctermfg=cyan ctermbg=default
|
||||
highlight Link cterm=bold ctermfg=yellow ctermbg=default
|
||||
highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
|
||||
highlight HardLink cterm=none ctermfg=yellow ctermbg=default
|
||||
highlight Socket cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight Device cterm=bold ctermfg=red ctermbg=default
|
||||
highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
|
||||
highlight Executable cterm=bold ctermfg=green ctermbg=default
|
||||
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
|
||||
highlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default
|
||||
highlight TopLine cterm=none ctermfg=black ctermbg=white
|
||||
highlight TopLineSel cterm=bold ctermfg=black ctermbg=default
|
||||
highlight StatusLine cterm=bold ctermfg=black ctermbg=white
|
||||
highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
|
||||
highlight CmdLine cterm=none ctermfg=white ctermbg=black
|
||||
highlight ErrorMsg cterm=none ctermfg=red ctermbg=black
|
||||
highlight Border cterm=none ctermfg=black ctermbg=white
|
||||
highlight OtherLine ctermfg=default ctermbg=default
|
||||
highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
|
||||
highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
|
||||
highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
|
||||
highlight CmpUnmatched cterm=bold ctermfg=white ctermbg=green
|
||||
highlight CmpBlank ctermfg=default ctermbg=default
|
||||
highlight AuxWin ctermfg=default ctermbg=default
|
||||
highlight TabLine cterm=none ctermfg=white ctermbg=black
|
||||
highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default
|
||||
highlight User1 ctermfg=default ctermbg=default
|
||||
highlight User2 ctermfg=default ctermbg=default
|
||||
highlight User3 ctermfg=default ctermbg=default
|
||||
highlight User4 ctermfg=default ctermbg=default
|
||||
highlight User5 ctermfg=default ctermbg=default
|
||||
highlight User6 ctermfg=default ctermbg=default
|
||||
highlight User7 ctermfg=default ctermbg=default
|
||||
highlight User8 ctermfg=default ctermbg=default
|
||||
highlight User9 ctermfg=default ctermbg=default
|
||||
highlight User10 ctermfg=default ctermbg=default
|
||||
highlight User11 ctermfg=default ctermbg=default
|
||||
highlight User12 ctermfg=default ctermbg=default
|
||||
highlight User13 ctermfg=default ctermbg=default
|
||||
highlight User14 ctermfg=default ctermbg=default
|
||||
highlight User15 ctermfg=default ctermbg=default
|
||||
highlight User16 ctermfg=default ctermbg=default
|
||||
highlight User17 ctermfg=default ctermbg=default
|
||||
highlight User18 ctermfg=default ctermbg=default
|
||||
highlight User19 ctermfg=default ctermbg=default
|
||||
highlight User20 ctermfg=default ctermbg=default
|
||||
highlight OtherWin ctermfg=default ctermbg=default
|
||||
highlight LineNr ctermfg=default ctermbg=default
|
||||
highlight OddLine ctermfg=default ctermbg=default
|
6
.config/vifm/scripts/README
Normal file
|
@ -0,0 +1,6 @@
|
|||
This directory is dedicated for user-supplied scripts/executables.
|
||||
vifm modifies its PATH environment variable to let user run those
|
||||
scripts without specifying full path. All subdirectories are added
|
||||
as well. File in a subdirectory overrules file with the same name
|
||||
in parent directories. Restart might be needed to recognize files
|
||||
in newly created or renamed subdirectories.
|
30
.config/vifm/scripts/supervifm
Executable file
|
@ -0,0 +1,30 @@
|
|||
#!/bin/sh
|
||||
width="$1"
|
||||
file="$2"
|
||||
i=0
|
||||
clear
|
||||
|
||||
|
||||
printf "\n\n\n"
|
||||
printf " "
|
||||
while [ "$i" -lt $( expr "$width" / 2) ]
|
||||
do
|
||||
printf " "
|
||||
i=$( expr "$i" + 1 )
|
||||
done
|
||||
|
||||
if [ -z $DISPLAY ] ; then
|
||||
chafa --work=1 -s 40x40 --animate=off -c 256 --symbols ascii "$file"
|
||||
sleep 10
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
if [ -z "$TERM256" ] ; then
|
||||
#chafa --work=1 --animate=off -c full -f sixels --bg blue "$file"
|
||||
chafa --work=1 --animate=off -c 256 -f sixels --bg blue "$file"
|
||||
else
|
||||
#chafa --work=1 -s 32x32 --animate=off -c 256 -f symbols --bg blue "$file"
|
||||
chafa --work=1 --animate=off -c 256 -f symbols --bg blue "$file"
|
||||
fi
|
||||
pkill chafa #make sure it's dead and not hogging resources
|
7011
.config/vifm/vifm-help.txt
Normal file
1
.config/vifm/vifminfo.json
Normal file
46
.config/vifm/vifmrc
Normal file
|
@ -0,0 +1,46 @@
|
|||
" Vilyaem's ViFM configuration
|
||||
|
||||
set dotfiles
|
||||
set mouse=a
|
||||
:view
|
||||
|
||||
command create :
|
||||
\| let $last_char = expand(system("str=\"%a\"; echo \"${str: -1}\""))
|
||||
\| if $last_char == "/"
|
||||
\| mkdir "%a"
|
||||
\| else
|
||||
\| touch "%a"
|
||||
\| endif
|
||||
|
||||
|
||||
:map $ :shell<cr>
|
||||
:map ; :
|
||||
:map J :view<cr>
|
||||
:map Q :quit<cr>
|
||||
:map S :!sxiv *<cr>
|
||||
:map ][ :compare listall<cr>
|
||||
|
||||
"Fix Sixel rendering bugs
|
||||
:map <Up> :pwd<cr><C-p>
|
||||
:map <Down> :pwd<cr><C-N>
|
||||
|
||||
nnoremap a :create<space>
|
||||
|
||||
filetype *.bmp,*.gif,*.jpe,*.jpeg,*.jpg,*.pbm,*.png,*.ppm,*.webp,*.xpm,*.dds,image_proxy sxiv
|
||||
"filetype *.bmp,*.gif,*.jpe,*.jpeg,*.jpg,*.pbm,*.png,*.ppm,*.webp,*.xpm,image_proxy swiv
|
||||
filetype *avi,*.mp4,*.mp3,*.m4a,*.mkv,*.webm,*.mod,*.s3m,*.it,*.raw,*.wav,*.ogg,*.ogv,*.opus mpv
|
||||
filetype *.pdf,*.epub,*.djvu zathura
|
||||
filetype *.mid,*.midi fluidsynth
|
||||
"filetype * vim
|
||||
filetype * nvim
|
||||
filetype .* nvim
|
||||
|
||||
highlight Win cterm=none ctermfg=white ctermbg=none
|
||||
|
||||
"Sixel and 256 color file preview
|
||||
fileviewer *.bmp,*.gif,*.jpe,*.jpeg,*.jpg,*.pbm,*.png,*.ppm,*.webp,*.xpm,image_proxy,*.ico supervifm %pw %c %pd %pc
|
||||
fileviewer *.mp4,*.mkv,*.ogv,*.webm,*.avi,*.3gp ffmpegthumbnailer -s 128 -i %c -o ~/.cache/thumb.jpg ; supervifm %pw ~/.cache/thumb.jpg %pd %pc
|
||||
fileviewer *.pdf pdftoppm -jpeg -f 1 -singlefile %c ~/.cache/thumb ; supervifm %pw ~/.cache/thumb.jpg %pd %pc
|
||||
fileviewer *.epub gnome-epub-thumbnailer %c ~/.cache/thumb.jpg ; supervifm %pw ~/.cache/thumb.jpg %pd %pc
|
||||
fileviewer *.img,*.bin,*.z,*.blend xxd %c
|
||||
fileviewer *.wav,*.mp3,*.mid,*.it,*.s3m,*.mod,*.opus,*.bin,*.dll,*.exe,*.dat file %c
|
5
.gitconfig
Normal file
|
@ -0,0 +1,5 @@
|
|||
# This is Git's per-user configuration file.
|
||||
[user]
|
||||
# Please adapt and uncomment the following lines:
|
||||
name = Vilyaem
|
||||
email = vilyaem@vilyaem.xyz
|
32
.tmux.conf
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Vilyaem's Tmux
|
||||
|
||||
# Default shell is zsh
|
||||
set-option -g default-shell /bin/zsh
|
||||
|
||||
# colors
|
||||
#set-option -g pane-border-bg blue
|
||||
#set-option -g pane-border-fg black
|
||||
|
||||
set -g status-bg blue
|
||||
set -g status-fg black
|
||||
|
||||
# Index at 1 instead of 0
|
||||
set -g base-index 1
|
||||
setw -g pane-base-index 1
|
||||
|
||||
# Different prefix key Ctrl-b -> Ctrl-a
|
||||
set -g prefix C-a
|
||||
|
||||
# File reloading
|
||||
#bind r source-file ~/.tmux.conf \; display “config file loaded.”
|
||||
|
||||
# Close immediately
|
||||
unbind x
|
||||
bind x kill-pane
|
||||
bind X kill-session
|
||||
|
||||
# More window splitting
|
||||
bind | split-window -h
|
||||
bind - split-window -v
|
||||
|
||||
|
84
.vimrc
Normal file
|
@ -0,0 +1,84 @@
|
|||
""VILYAEMS VIMRC
|
||||
"tinier vimrc 80 line limit
|
||||
filetype plugin on
|
||||
set autoindent
|
||||
set backspace=indent,eol,start
|
||||
set encoding=utf-8
|
||||
set et
|
||||
set lazyredraw
|
||||
set list
|
||||
set listchars=tab:>.
|
||||
set mouse=a
|
||||
set nocompatible
|
||||
set noswapfile
|
||||
set number relativenumber
|
||||
"set omnifunc=syntaxcomplete#Complete
|
||||
set spelllang=en_gb
|
||||
set sw=2
|
||||
set viminfo=""
|
||||
"syntax enable
|
||||
"syntax spell toplevel
|
||||
|
||||
"Vimwiki
|
||||
let g:vimwiki_list = [{'path': '~/x/wiki/md/', 'path_html': '~/x/wiki/web/',
|
||||
\ 'template_path': '~/x/wiki/', 'template_default': 'page', 'template_ext': '.html'}]
|
||||
|
||||
"call plug#begin(system('echo "~/.vim/plugged/"'))
|
||||
"Plug 'preservim/nerdtree'
|
||||
"Plug 'jreybert/vimagit'
|
||||
"Plug 'vimwiki/vimwiki'
|
||||
"Plug 'xiyaowong/transparent.nvim'
|
||||
"call plug#end()
|
||||
"
|
||||
|
||||
" System clipboard usage
|
||||
nnoremap <Leader>y "+y
|
||||
nnoremap <Leader>p "+p
|
||||
inoremap <Leader>y <Esc>"+y
|
||||
inoremap <Leader>p <Esc>"+p
|
||||
|
||||
" Color column
|
||||
nnoremap <Leader>co :set colorcolumn=80<cr>
|
||||
nnoremap <Leader>nc :set colorcolumn-=80<cr>
|
||||
|
||||
"whitespace removal
|
||||
"nnoremap <leader>cw :%s/\s\+$//<CR>:noh<CR>
|
||||
|
||||
"indent file
|
||||
"nnoremap <leader>ind gg=G``
|
||||
"inoremap <leader>ind <Esc>gg=G``I
|
||||
|
||||
"code completion
|
||||
"inoremap <leader>1 <C-x><C-o>
|
||||
|
||||
"easy search and replace
|
||||
nnoremap S :%s///g<Left><Left>
|
||||
|
||||
"easy save
|
||||
nnoremap W :w<cr>
|
||||
|
||||
" c h soy++
|
||||
"desc gen
|
||||
function FileHeading()
|
||||
let s:line=line(".")
|
||||
call setline(s:line,"/*********************************************")
|
||||
call append(s:line,"* Description - ")
|
||||
call append(s:line+1,"* Author - Vilyaem")
|
||||
call append(s:line+2,"* *******************************************/")
|
||||
unlet s:line
|
||||
endfunction
|
||||
imap <F4> <Esc>mz:execute FileHeading()<Enter>g;kkA
|
||||
|
||||
"section
|
||||
imap <F3> <Esc>I/*----------!----------*/<Esc>/!<Enter>?<Enter>xi
|
||||
|
||||
"bulid
|
||||
imap <F5> <Esc>:w<Enter>:!./c.sh<Enter>
|
||||
nnoremap <F5> <Esc>:w<Enter>:!./c.sh<Enter>
|
||||
"comments
|
||||
inoremap <leader>oc /*
|
||||
inoremap <leader>cc */
|
||||
inoremap <leader>cl <Esc>I/*<Esc>A*/
|
||||
nnoremap <leader>cl <Esc>I/*<Esc>A*/
|
||||
|
||||
"syntax off
|
8
.xinitrc
Normal file
|
@ -0,0 +1,8 @@
|
|||
xset r rate 400 100 &
|
||||
picom &
|
||||
setxkbmap -option caps:escape us dvorak &
|
||||
xrandr -s 1280x720 &
|
||||
xbanish &
|
||||
nhkd &
|
||||
bar &
|
||||
exec dwm
|
4
.zprofile
Normal file
|
@ -0,0 +1,4 @@
|
|||
#Login to window manager the moment I login to my first tty.
|
||||
if [[ $(tty) == /dev/tty1 ]]; then
|
||||
doas slim
|
||||
fi
|
180
.zshrc
Normal file
|
@ -0,0 +1,180 @@
|
|||
#############################################
|
||||
# Description - My ZSH configuration
|
||||
# Author - Vilyaem
|
||||
# ###########################################
|
||||
|
||||
##########Zsh##########
|
||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||
source /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh
|
||||
autoload -Uz compinit -C -d "$ZSH_COMPDUMP/.zcompdump-${ZSH_VERSION}"
|
||||
autoload -U colors && colors
|
||||
_comp_options+=(globdots)
|
||||
# Enable case-insensitive completion
|
||||
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
|
||||
# Show possible completions in a menu
|
||||
zstyle ':completion:*' menu select
|
||||
# Enable auto-correction of mistyped commands
|
||||
setopt correct
|
||||
# Set the theme
|
||||
ZSH_THEME="agnoster"
|
||||
# History settings
|
||||
HISTSIZE=10000000
|
||||
SAVEHIST=10000000
|
||||
HISTFILE=~/.cache/zsh_history
|
||||
export ZSH_COMPDUMP="$HOME/.cache/zcompdump"
|
||||
setopt append_history
|
||||
setopt share_history
|
||||
export PS1="%{$fg[blue]%}$USER%%%{$reset_color%} %~ "
|
||||
#export PS1="$USER%% %~ "
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
export PATH="$HOME/r/zig-linux-x86_64-0.13.0/:$PATH"
|
||||
export PATH="$HOME/.local/share/cargo/bin/:$PATH"
|
||||
#Add Vi mode
|
||||
bindkey -v
|
||||
#Arrow key history completion
|
||||
bindkey '^[[A' history-search-backward
|
||||
bindkey '^[[B' history-search-forward
|
||||
|
||||
|
||||
##########Default Programs##########
|
||||
export BROWSER="firefox"
|
||||
export BUG_PROJECT=$(pwd)/bug
|
||||
export CC="gcc"
|
||||
export EDITOR="v"
|
||||
export MANPAGER='nvim +Man!'
|
||||
export TERMINAL="st"
|
||||
export SESSION_MANAGER="slim"
|
||||
|
||||
##########Ricing##########
|
||||
export XDG_RUNTIME_DIR=/run/user/0
|
||||
export GTK_THEME=Breeze:dark
|
||||
export XCURSOR_THEME="Bibata-Modern-Classic"
|
||||
export QT_QPA_PLATFORMTHEME="qt5ct:qt6ct"
|
||||
eval $(dircolors -b)
|
||||
|
||||
##########Cleanup##########
|
||||
export INPUTRC="~/.config/readline/.inputrc"
|
||||
export XINITRC="/home/vilyaem/.config/X11/xinitrc"
|
||||
export LESSHISTFILE="-"
|
||||
export CARGO_HOME="$XDG_DATA_HOME"/cargo
|
||||
export ASPELL_CONF="per-conf $XDG_CONFIG_HOME/aspell/aspell.conf; personal $XDG_DATA_HOME/aspell/en.pws; repl $XDG_DATA_HOME/aspell/en.prepl"
|
||||
export ICEAUTHORITY="$XDG_CACHE_HOME/ICEauthority"
|
||||
export ELECTRUMDIR="$XDG_DATA_HOME/electrum"
|
||||
|
||||
##########Wine##########
|
||||
alias wine='WINEPREFIX="$HOME/.wine" WINEARCH=win32 wine'
|
||||
alias wine64='WINEPREFIX="$HOME/.local/share/wineprefixes/default/" WINEARCH=win64 wine64'
|
||||
#export WINEPREFIX=~/.wine64/
|
||||
export WINEPREFIX=~/.local/share/wineprefixes/default/
|
||||
export WINEARCH=win64
|
||||
|
||||
|
||||
##########Aliases##########
|
||||
alias abook='abook --datafile ~/.local/share/abook/addressbook'
|
||||
alias alsafix='for x in `amixer controls | grep layback` ; do amixer cset "${x}" on ; done'
|
||||
alias apc='doas apt list --installed | wc -l'
|
||||
alias aplist='doas apt list --installed'
|
||||
alias aptar='doas apt autoremove'
|
||||
alias apti='doas apt install'
|
||||
alias aptr='doas apt remove'
|
||||
alias apts='doas apt search'
|
||||
alias c='./c.sh'
|
||||
alias dosbox="dosbox -conf ~/.local/share/dosbox/dosbox.conf"
|
||||
alias dwifi='doas rfkill block wifi'
|
||||
alias emsetup='cd ~/r/emsdk/ && ./emsdk activate latest && source ./emsdk_env.sh && pwd'
|
||||
alias freedosmnt='doas mount -t msdos -o loop,offset=32256 freedos.img /mnt/'
|
||||
alias gc='git clone --recurse-submodules --depth=1'
|
||||
alias getcam='cp --update=none /mnt/DCIM/139CANON/* /root/media/vilyaemkenyaz/'
|
||||
alias getmouse='xdotool getmouselocation --shell'
|
||||
alias ghex='grabc -hex'
|
||||
alias gmt='xdg-mime query filetype $1'
|
||||
alias grgb='grabc -rgb' \
|
||||
alias hosted='doas v /etc/hosts ; exit'
|
||||
alias l='\ls --color=auto --group-directories-first'
|
||||
alias ls='ls --color=auto -lah'
|
||||
alias makeiso='xorriso -as mkisofs -o $1.iso .'
|
||||
alias mkgource='gource --fullscreen -s 0.8 ./ --stop-at-end -follow-user --'VilyaemKenyaz''
|
||||
alias nero='monero-wallet-cli --trusted-daemon --daemon-address http://node.monerodevs.org:18089 --wallet-file vilyaem'
|
||||
alias neroo='monero-wallet-cli --trusted-daemon --daemon-address http://node.monerodevs.org:18089'
|
||||
alias pg='ps aux | grep'
|
||||
alias phptmp='doas php -S localhost:80'
|
||||
alias printer='system-config-printer'
|
||||
alias qrcode='qrencode -s 20 "#1" -o qr.png'
|
||||
alias record='ffmpeg -y -f x11grab -r 25 -i :0.0 -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p -s 1280x720 vilcord-$(date -I).mkv'
|
||||
alias recordcast='ffmpeg -y -f x11grab -r 30 -i :0.0 -f alsa -i hw:0 -vcodec libx264 -preset ultrafast -qp 0 -pix_fmt yuv444p vilcast-$(date -I).mkv'
|
||||
alias recordmic='ffmpeg -y -f alsa -i hw:0 vilmic-$(date -I).ogg'
|
||||
alias setbug='export BUG_PROJECT=$(pwd)/bug'
|
||||
alias sk='screenkey'
|
||||
alias sx='sxiv'
|
||||
alias tarit='tar -czvf $1.tar.gz $1'
|
||||
alias tsm='transmission-remote'
|
||||
alias tsmd='pkill trans && transmission-daemon'
|
||||
alias untar='tar -xzvf $1'
|
||||
alias usbmnt='doas mount -t vfat /dev/sdb1 /mnt/ && ls /mnt/'
|
||||
alias usbumnt='doas umount /mnt/'
|
||||
alias vedit='cd ~ && v .vimrc'
|
||||
alias vgamon='xrandr --output VGA1 --mode 640x480 --pos -640x0 --output HDMI1 --pos 0x0'
|
||||
alias vi='nvim'
|
||||
alias vim='nvim'
|
||||
alias webcam='mpv /dev/video0'
|
||||
alias wikiedit='z mr ; v *'
|
||||
alias xb='xbacklight -set $1'
|
||||
alias yt='ytfzf --ii=inv.nadeko.net --show-thumbnails -T chafa --max-threads=$(nproc)'
|
||||
alias zathura='printf "use v"'
|
||||
alias zipup='zip -r $1.zip $1 && rm $1'
|
||||
|
||||
##########Shell functions & utilities##########
|
||||
|
||||
#Dictionary!
|
||||
dict(){
|
||||
grep $@ ~/.config/dict.csv | awk -F, '{print "Definition of "$1"..."; print " " ;for (i=3; i<=NF; i++) printf "%s", $i; print ""}' | sed 's/\"//g'
|
||||
}
|
||||
|
||||
#Internet dict.org dictionary
|
||||
wdict(){
|
||||
for var in "$@"
|
||||
do
|
||||
curl dict://dict.org/d:"$var"
|
||||
done
|
||||
}
|
||||
|
||||
#Read me a story!
|
||||
story(){
|
||||
pdftotext $@ - | espeak --stdout | mpv -
|
||||
}
|
||||
|
||||
#Logout
|
||||
bye(){
|
||||
pkill tmux && doas su root --c 'pm-suspend'
|
||||
}
|
||||
|
||||
#It's like notion, but not soy
|
||||
note(){
|
||||
printf ".H1\nJournal Entry of $(date)\n.P\n\n" > ~/.local/share/pmkentries/$(date -I).mr
|
||||
remind ~/.reminders >> ~/.local/share/pmkentries/$(date -I).mr
|
||||
cat ~/.local/share/pmakebase.mr >> ~/.local/share/pmkentries/$(date -I).mr
|
||||
vim ~/.local/share/pmkentries/$(date -I).mr
|
||||
}
|
||||
|
||||
#Download 'Tube links with yt-dlp
|
||||
t(){
|
||||
yt-dlp -f "best[height<=360]" $(echo "$@" | sed -e 's|inv\.nadeko\.net|youtube.com|g' -e 's|yewtu\.be|youtube.com|g')
|
||||
}
|
||||
|
||||
#Watch 'tube links with mpv
|
||||
tw(){
|
||||
mpv $(echo "$@" | sed -e 's|inv\.nadeko\.net|youtube.com|g' -e 's|yewtu\.be|youtube.com|g')
|
||||
}
|
||||
|
||||
#Yazi shell wrapper script
|
||||
function y() {
|
||||
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
|
||||
yazi "$@" --cwd-file="$tmp"
|
||||
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
|
||||
builtin cd -- "$cwd"
|
||||
fi
|
||||
rm -f -- "$tmp"
|
||||
}
|
||||
|
||||
##########Zoxide##########
|
||||
eval "$(zoxide init zsh)"
|
40
README.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Vilyaem's Dotfiles and Programs
|
||||
|
||||
This repository stores my configuration, private forks of the programs I use,
|
||||
and my own personal programs and scripts..
|
||||
|
||||
apk.txt stores all apt packages installed, very bloated.
|
||||
apkworld.txt stores all intentionally installed apt packages.
|
||||
|
||||
## Programs
|
||||
|
||||
* badwolf -- Web Browser
|
||||
* dmenu -- Dynamic Menu
|
||||
* nhkd -- Nano Hotkey Daemon
|
||||
* vildwm -- Vilyaem's Dynamic Window Manager
|
||||
* vilst -- Vilyaem's ST Terminal Emulator
|
||||
* sxiv -- Image viewer
|
||||
|
||||
## Configurations
|
||||
* OpenSCAD
|
||||
* at-spi
|
||||
* dosbox
|
||||
* foot
|
||||
* gtk-2.0
|
||||
* gtk-3.0
|
||||
* htop
|
||||
* mpv
|
||||
* neofetch
|
||||
* nvim <- now home-made
|
||||
* qutebrowser
|
||||
* screenkey.json
|
||||
* spectrwm
|
||||
* sway
|
||||
* tmuxinator
|
||||
* vifm
|
||||
* wget
|
||||
* vim
|
||||
|
||||
## Personal Software
|
||||
* bar -- Status Bar
|
||||
* cl -- Screen clearer made in ASM
|
258
apkworld.txt
Normal file
|
@ -0,0 +1,258 @@
|
|||
7zip
|
||||
abook
|
||||
acpid
|
||||
aerc
|
||||
alpine
|
||||
alpine-base
|
||||
alsa-lib-dev
|
||||
alsa-tools
|
||||
alsa-utils
|
||||
alsaconf
|
||||
apk-tools-zsh-completion
|
||||
apko-zsh-completion
|
||||
assimp
|
||||
assimp-dev
|
||||
assimp-libs
|
||||
aubio
|
||||
binutils
|
||||
bison
|
||||
boost1.84-dev
|
||||
build-base
|
||||
busybox-mdev-openrc
|
||||
cairo
|
||||
cairo-dev
|
||||
cdrkit
|
||||
chafa
|
||||
clang
|
||||
clang-dev
|
||||
clang19-extra-tools
|
||||
clisp
|
||||
cloc
|
||||
cmake
|
||||
cryptsetup
|
||||
ctags
|
||||
cups
|
||||
cups-pdf
|
||||
cups-pk-helper
|
||||
curl
|
||||
curl-dev
|
||||
czmq-dev
|
||||
dbus
|
||||
dbus-x11
|
||||
debootstrap
|
||||
deutex
|
||||
dmenu
|
||||
dmidecode
|
||||
doas
|
||||
docs
|
||||
doxygen
|
||||
dunst
|
||||
e2fsprogs
|
||||
electrum
|
||||
embree
|
||||
embree-dev
|
||||
embree3-dev
|
||||
epson-inkjet-printer-escpr
|
||||
espeak
|
||||
eudev
|
||||
farbfeld
|
||||
farstream
|
||||
ffmpeg
|
||||
ffmpegthumbnailer
|
||||
ffplay
|
||||
firefox
|
||||
fluidsynth
|
||||
font-dejavu
|
||||
font-noto
|
||||
font-noto-emoji
|
||||
font-terminus-nerd
|
||||
font-twemoji
|
||||
fossil
|
||||
fzf
|
||||
g++
|
||||
gajim
|
||||
gcc
|
||||
gcc-arm-none-eabi
|
||||
gcompat
|
||||
gcr
|
||||
gdb
|
||||
ghostscript
|
||||
giflib-dev
|
||||
gifsicle
|
||||
gimp
|
||||
git
|
||||
go
|
||||
gource
|
||||
gperftools
|
||||
groff
|
||||
gst-libav
|
||||
gst-plugins-base
|
||||
gst-plugins-ugly
|
||||
gst-vaapi
|
||||
gstreamer
|
||||
gstreamermm
|
||||
htop
|
||||
icu
|
||||
icu-dev
|
||||
imagemagick
|
||||
imlib2
|
||||
imlib2-dev
|
||||
inetutils-telnet
|
||||
iw
|
||||
jq
|
||||
kdenlive
|
||||
kiwix-desktop
|
||||
kiwix-tools
|
||||
ledger
|
||||
libcurl
|
||||
libdecor-dev
|
||||
libevdev
|
||||
libevdev-dev
|
||||
libexif-dev
|
||||
libinput-dev
|
||||
libjpeg
|
||||
libjpeg-turbo-dev
|
||||
libreoffice
|
||||
libreoffice-lang-en_us
|
||||
libx11-dev
|
||||
libxcb-dev
|
||||
libxcursor-dev
|
||||
libxft-dev
|
||||
libxi-dev
|
||||
libxinerama-dev
|
||||
libxrandr-dev
|
||||
libzmq
|
||||
links
|
||||
linux-firmware-i915
|
||||
linux-firmware-intel
|
||||
linux-firmware-mediatek
|
||||
linux-firmware-other
|
||||
linux-firmware-rtl_bt
|
||||
linux-lts
|
||||
live-media-utils
|
||||
lld
|
||||
lua
|
||||
lynx
|
||||
maim
|
||||
make
|
||||
mandoc
|
||||
mercurial
|
||||
mesa-vulkan-intel
|
||||
mingw-w64-gcc
|
||||
minizip-dev
|
||||
monero
|
||||
mount
|
||||
mpv
|
||||
msttcorefonts-installer
|
||||
mumble
|
||||
musl-dbg
|
||||
musl-dev
|
||||
musl-utils
|
||||
ncdu
|
||||
ncurses-dev
|
||||
neovim
|
||||
newsraft
|
||||
ninja
|
||||
npm
|
||||
nsxiv
|
||||
onetbb-dev
|
||||
openal-soft-dev
|
||||
openscad
|
||||
openssh
|
||||
openssl
|
||||
pandoc
|
||||
picom
|
||||
poppler
|
||||
profanity
|
||||
projectm
|
||||
py3-pip
|
||||
qbittorrent
|
||||
qbittorrent-cli
|
||||
qemu-audio-sdl
|
||||
qemu-img
|
||||
qemu-system-arm
|
||||
qemu-system-x86_64
|
||||
qemu-ui-sdl
|
||||
qemu-x86_64
|
||||
raylib
|
||||
raylib-dev
|
||||
redshift
|
||||
remind
|
||||
ripgrep
|
||||
rsync
|
||||
sacc
|
||||
scc
|
||||
screenkey
|
||||
scrot
|
||||
sdl12-compat
|
||||
sdl12-compat-dev
|
||||
sdl2-dev
|
||||
sdl2_mixer
|
||||
sdl2_mixer-dev
|
||||
sdl2_net-dev
|
||||
sdl2_ttf-dev
|
||||
setxkbmap
|
||||
shellcheck
|
||||
slop
|
||||
socat
|
||||
sqlite
|
||||
syslinux
|
||||
tcc
|
||||
tcc-dev
|
||||
tcc-libs
|
||||
tcc-libs-static
|
||||
tcpdump
|
||||
tealdeer
|
||||
texlive
|
||||
the_silver_searcher
|
||||
thunderbird
|
||||
tmux
|
||||
tmuxinator
|
||||
tor
|
||||
torsocks
|
||||
tree-sitter-c
|
||||
tree-sitter-cpp
|
||||
tree-sitter-lua
|
||||
tree-sitter-make
|
||||
tree-sitter-markdown
|
||||
twinkle
|
||||
ueberzug
|
||||
util-linux-login
|
||||
vifm
|
||||
vim
|
||||
w3m
|
||||
wabt
|
||||
waydroid
|
||||
wget
|
||||
wine
|
||||
wpa_supplicant
|
||||
xbacklight
|
||||
xbanish
|
||||
xclip
|
||||
xdg-dbus-proxy
|
||||
xdg-utils
|
||||
xdotool
|
||||
xf86-input-libinput
|
||||
xf86-video-fbdev
|
||||
xf86-video-intel
|
||||
xhost
|
||||
xinit
|
||||
xinput
|
||||
xkill
|
||||
xorg-server
|
||||
xrandr
|
||||
xsetroot
|
||||
xwallpaper
|
||||
yasm
|
||||
yt-dlp
|
||||
ytfzf
|
||||
zathura
|
||||
zathura-pdf-mupdf
|
||||
zig
|
||||
zim-tools
|
||||
zip
|
||||
zsh
|
||||
zsh-autosuggestions
|
||||
zsh-syntax-highlighting
|
||||
zstd-dev
|
||||
zzz
|
BIN
badwolf/.ninja_deps
Normal file
63
badwolf/.ninja_log
Executable file
|
@ -0,0 +1,63 @@
|
|||
# ninja log v5
|
||||
1 65 1713286030825038925 po/messages.pot 566c6a1444ecc613
|
||||
2 107 1713286030866038926 fmt.o 532a6341c0e8e918
|
||||
3 388 1713286031147038932 uri.o 2458d857fa9f209f
|
||||
388 407 1713286031167038933 po/fr.po 1dd8e44731f319df
|
||||
407 426 1713286031186038933 locale/fr/LC_MESSAGES/Badwolf.mo ce2ac1d444874d5a
|
||||
426 448 1713286031208038934 po/pt_BR.po 3802b38cf0257900
|
||||
448 474 1713286031231038934 locale/pt_BR/LC_MESSAGES/Badwolf.mo ee2f19b7539c4b47
|
||||
474 496 1713286031256038935 po/tr.po 9573cbbef9125bdf
|
||||
496 518 1713286031275038936 locale/tr/LC_MESSAGES/Badwolf.mo 4842e28ac1b84bf7
|
||||
518 541 1713286031301038936 po/de.po 2239741ba3ea8936
|
||||
541 565 1713286031325038937 locale/de/LC_MESSAGES/Badwolf.mo c4ef72af4db428d6
|
||||
565 586 1713286031346038937 po/vi.po 3a029179310ff9ab
|
||||
586 608 1713286031368038938 locale/vi/LC_MESSAGES/Badwolf.mo 537283c15a391a8e
|
||||
2 1398 1713286032153038956 userscripts.o 1ca9348aa797fd33
|
||||
3 1764 1713286032524038965 keybindings.o 82f0f39378e01e4f
|
||||
65 1815 1713286032575038966 downloads.o 8e1c1ba285687f86
|
||||
1 1924 1713286032684038969 bookmarks.o 3414b3827617156b
|
||||
107 2145 1713286032904038974 badwolf.o a671890a4d320b20
|
||||
2145 2404 1713286033160038980 badwolf 4be0213d418c55b5
|
||||
1 14 1713286195270042833 po/messages.pot 566c6a1444ecc613
|
||||
14 23 1713286195279042833 po/fr.po 1dd8e44731f319df
|
||||
15 24 1713286195280042833 po/de.po 2239741ba3ea8936
|
||||
14 25 1713286195282042833 po/pt_BR.po 3802b38cf0257900
|
||||
14 31 1713286195287042834 po/tr.po 9573cbbef9125bdf
|
||||
16 32 1713286195287042834 po/vi.po 3a029179310ff9ab
|
||||
23 34 1713286195288042834 locale/fr/LC_MESSAGES/Badwolf.mo ce2ac1d444874d5a
|
||||
24 34 1713286195289042834 locale/de/LC_MESSAGES/Badwolf.mo c4ef72af4db428d6
|
||||
26 40 1713286195295042834 locale/pt_BR/LC_MESSAGES/Badwolf.mo ee2f19b7539c4b47
|
||||
32 41 1713286195297042834 locale/vi/LC_MESSAGES/Badwolf.mo 537283c15a391a8e
|
||||
31 42 1713286195298042834 locale/tr/LC_MESSAGES/Badwolf.mo 4842e28ac1b84bf7
|
||||
2 686 1713286195942042849 keybindings.o 82f0f39378e01e4f
|
||||
686 913 1713286196165042854 badwolf 4be0213d418c55b5
|
||||
1 24 1713287455318072780 po/messages.pot 566c6a1444ecc613
|
||||
24 45 1713287455339072780 po/fr.po 1dd8e44731f319df
|
||||
27 47 1713287455339072780 po/pt_BR.po 3802b38cf0257900
|
||||
45 64 1713287455358072781 locale/fr/LC_MESSAGES/Badwolf.mo ce2ac1d444874d5a
|
||||
47 69 1713287455363072781 locale/pt_BR/LC_MESSAGES/Badwolf.mo ee2f19b7539c4b47
|
||||
64 88 1713287455382072782 po/tr.po 9573cbbef9125bdf
|
||||
69 89 1713287455382072782 po/de.po 2239741ba3ea8936
|
||||
88 108 1713287455397072782 locale/tr/LC_MESSAGES/Badwolf.mo 4842e28ac1b84bf7
|
||||
89 115 1713287455403072782 locale/de/LC_MESSAGES/Badwolf.mo c4ef72af4db428d6
|
||||
108 128 1713287455422072782 po/vi.po 3a029179310ff9ab
|
||||
128 153 1713287455443072783 locale/vi/LC_MESSAGES/Badwolf.mo 537283c15a391a8e
|
||||
1 1167 1713287456460072807 bookmarks.o 3414b3827617156b
|
||||
2 1288 1713287456581072810 userscripts.o 1ca9348aa797fd33
|
||||
2 1344 1713287456638072811 downloads.o 8e1c1ba285687f86
|
||||
3 1663 1713287456956072819 badwolf.o a671890a4d320b20
|
||||
1663 1893 1713287457184072824 badwolf 4be0213d418c55b5
|
||||
77 1033 1713498091509103351 po/messages.pot 566c6a1444ecc613
|
||||
1034 1217 1713498091693103347 po/de.po 2239741ba3ea8936
|
||||
1035 1217 1713498091693103347 po/vi.po 3a029179310ff9ab
|
||||
1034 1217 1713498091693103347 po/fr.po 1dd8e44731f319df
|
||||
1034 1218 1713498091694103347 po/pt_BR.po 3802b38cf0257900
|
||||
1034 1218 1713498091693103347 po/tr.po 9573cbbef9125bdf
|
||||
1217 1277 1713498091753103346 locale/vi/LC_MESSAGES/Badwolf.mo 537283c15a391a8e
|
||||
1218 1277 1713498091753103346 locale/pt_BR/LC_MESSAGES/Badwolf.mo ee2f19b7539c4b47
|
||||
1218 1277 1713498091753103346 locale/tr/LC_MESSAGES/Badwolf.mo 4842e28ac1b84bf7
|
||||
1217 1279 1713498091755103346 locale/de/LC_MESSAGES/Badwolf.mo c4ef72af4db428d6
|
||||
1217 1279 1713498091756103346 locale/fr/LC_MESSAGES/Badwolf.mo ce2ac1d444874d5a
|
||||
78 7364 1713498097838103221 downloads.o 8e1c1ba285687f86
|
||||
7364 8209 1713498098681103204 badwolf 4be0213d418c55b5
|
||||
0 0 1733606610253595009 fmt.o 532a6341c0e8e918
|
9
badwolf/AUTHORS
Executable file
|
@ -0,0 +1,9 @@
|
|||
Ben K <ben-k@tutanota.com>
|
||||
Haelwenn (lanodan) Monnier <contact@hacktivis.me>
|
||||
Jean-Yves Monnier <jeymon@gmail.com>
|
||||
Ngô Ngọc Đức Huy <huyngo@disroot.org>
|
||||
nXecure <j.xecure@gmail.com>
|
||||
Oğuz Ersen <oguz@ersen.moe>
|
||||
Pedro Lucas Porcellis <porcellis@eletrotupi.com>
|
||||
Stacy Harper <contact@stacyharper.net>
|
||||
striker.sh <strikersh@disroot.org>
|
26
badwolf/COPYING
Executable file
|
@ -0,0 +1,26 @@
|
|||
Copyright (c) 2019-2022, Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
3. Neither the name of the <ORGANIZATION> nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
35
badwolf/KnowledgeBase.md
Executable file
|
@ -0,0 +1,35 @@
|
|||
<!--
|
||||
SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
-->
|
||||
|
||||
- Similar WebKitGTK+ browser: https://www.uninformativ.de/git/lariza/
|
||||
- WebKit2 Extensions Tutorial: https://blogs.igalia.com/carlosgc/2013/09/10/webkit2gtk-web-process-extensions/
|
||||
- https://trac.torproject.org/projects/tor/wiki/doc/ImportantGoogleChromeBugs / https://trac.torproject.org/projects/tor/ticket/1925
|
||||
- https://webkit.org/blog/3476/content-blockers-first-look/
|
||||
|
||||
# GObject Reference counting
|
||||
- `GOBJECT_DEBUG=instance-count GTK_DEBUG=interactive %command%`
|
||||
- Switch to the Statistics tab
|
||||
- Press record (top-left)
|
||||
- Do a bunch of actions, specially reversible ones
|
||||
- Stop recording
|
||||
|
||||
Tiling window manager tip for WebKitGTK: Put the application and it's debugger on floating, leaving WebKitWebProcess ones in the back
|
||||
|
||||
# Bookmark formats
|
||||
The different plain-text formats used by web browsers found in the wild, done
|
||||
in Augmented Backus–Naur Form (ABNF).
|
||||
|
||||
url = *CHAR
|
||||
title = *CHAR
|
||||
|
||||
## uzbl
|
||||
bookmark = URL TAB title [TAB tags]
|
||||
tags = *(*CHAR SP)
|
||||
|
||||
Documenter comment: How does it manages when the separator (TAB here) is
|
||||
present in the title?
|
||||
|
||||
## qutebrowser
|
||||
bookmark = URL SP title
|
11
badwolf/LICENSES/BSD-3-Clause.txt
Executable file
|
@ -0,0 +1,11 @@
|
|||
Copyright (c) <year> <owner>.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
170
badwolf/LICENSES/CC-BY-SA-4.0.txt
Executable file
|
@ -0,0 +1,170 @@
|
|||
Creative Commons Attribution-ShareAlike 4.0 International
|
||||
|
||||
Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors.
|
||||
|
||||
Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described.
|
||||
|
||||
Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public.
|
||||
|
||||
Creative Commons Attribution-ShareAlike 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||
|
||||
Section 1 – Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
|
||||
e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||
|
||||
g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike.
|
||||
|
||||
h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights under this Public License.
|
||||
|
||||
k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
||||
|
||||
l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||
|
||||
m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 – Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
A. reproduce and Share the Licensed Material, in whole or in part; and
|
||||
|
||||
B. produce, reproduce, and Share Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section 6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
|
||||
|
||||
B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply.
|
||||
|
||||
C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties.
|
||||
|
||||
Section 3 – License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material (including in modified form), You must:
|
||||
|
||||
A. retain the following if it is supplied by the Licensor with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||
|
||||
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
|
||||
|
||||
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
|
||||
|
||||
b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
|
||||
|
||||
Section 4 – Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database;
|
||||
|
||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
|
||||
|
||||
Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.
|
||||
|
||||
b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||
|
||||
Section 6 – Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
|
||||
|
||||
d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
||||
|
||||
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||
|
||||
Section 7 – Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
||||
|
||||
Section 8 – Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
||||
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
90
badwolf/README.md
Executable file
|
@ -0,0 +1,90 @@
|
|||
# BadWolf
|
||||
```
|
||||
SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
```
|
||||
|
||||
Minimalist and privacy-oriented WebKitGTK+ browser.
|
||||
|
||||
Homepage: <https://hacktivis.me/projects/badwolf>
|
||||
|
||||
The name is a reference to BBC's Doctor Who TV series, I took it simply because I wanted to have a specie in the name, like some other web browsers do, but doesn't go into the “gentle” zone.
|
||||
|
||||
## Differences
|
||||
Comparing from other small WebKit browsers for unixes found in the wild:
|
||||
|
||||
- Independent of environment, should just work if GTK and WebKitGTK does
|
||||
- Storing data should be:
|
||||
- explicit and optional (i.e. Applying preferences doesn't imply Saving to disk)
|
||||
- not queryabe by WebKit (so the web can't use it)
|
||||
- done in a standard format (like XBEL for bookmarks)
|
||||
- Static UI, no element should be added at runtime, this is to avoid potential tracking via viewport changes
|
||||
- Small codebase, should be possible to read and understand it completely over an afternoon.
|
||||
- Does not use modal editing (from vi) as that was designed for editing, not browsing
|
||||
- UTF-8 encoding by default
|
||||
|
||||
Motivation from other clients <https://hacktivis.me/articles/www-client%20are%20broken>
|
||||
|
||||
## Contributing
|
||||
### Translations
|
||||
You need to have gettext installed. If you want a GUI, poedit exists and Weblate is a good web platform that I might consider hosting at some point.
|
||||
|
||||
- Syncing POT file with the source code: ``ninja po/messages.pot``
|
||||
- Syncing PO file with the POT file: ``ninja po/de.po``
|
||||
- Initialising a new PO file (example for German, `de_DE`): ``msginit -l de_DE -i po/messages.pot -o po/de.po``
|
||||
|
||||
## Contacts / Discussions
|
||||
- IRC: `#badwolf-browser` on [GeekNode](https://www.geeknode.org/)
|
||||
- Matrix (bridge): [#badwolf-browser:matrix.fdn.fr](https://matrix.to/#/#badwolf-browser:matrix.fdn.fr)
|
||||
|
||||
## Repositories
|
||||
### git
|
||||
- Main: <https://hacktivis.me/git/badwolf/>, <git://hacktivis.me/git/badwolf.git>
|
||||
- Mirror: <https://gitlab.com/lanodan/badWolf.git>, this one can also be used if you prefer tickets/PRs over emails
|
||||
|
||||
### release assets
|
||||
- Main: <https://hacktivis.me/releases/>
|
||||
- Mirror: <https://gitlab.com/lanodan/badWolf/tags>
|
||||
|
||||
- `*.tar.*` files are tarballs archives to be extracted with a program like `tar(1)`, GNU tar and LibArchive bsdtar are known to work.
|
||||
- `*.sign` files are minisign (OpenBSD `signify(1)` compatible) signatures, they key used for it can be found at <https://hacktivis.me/releases/signify/> as well as other places (feel free to ping me to get it)
|
||||
|
||||
## Manual Installation
|
||||
### Dependencies
|
||||
- POSIX-compatible Shell (i.e. mrsh, dash, lksh)
|
||||
- [ninja](https://ninja-build.org/) or [samurai](https://github.com/michaelforney/samurai)
|
||||
- A pkg-config implementation (pkgconf is recommended)
|
||||
- C11 Compiler (such as clang or gcc)
|
||||
- [WebKitGTK](https://webkitgtk.org/), only the latest stable(2.32.0+) is supported
|
||||
- [libxml-2.0](http://www.xmlsoft.org/), no known version limitation
|
||||
- (optional, translating) [po4a](https://po4a.org/) to modify manpage translations
|
||||
- (optional, translating) gettext implementation (such as GNU Gettext)
|
||||
- (optional, translating) ed(1), the standard editor
|
||||
- (optional, lint) [mandoc](https://mdocml.bsd.lv/) (the command) for linting the manpage
|
||||
- (optional, lint) [shellcheck](https://www.shellcheck.net/) for linting the `./configure` script
|
||||
- (optional, lint) [flawfinder](https://www.dwheeler.com/flawfinder/) for examining C source code for flaws
|
||||
- (optional, lint) [reuse](https://reuse.software/) for checking REUSE compliance
|
||||
|
||||
Note: Packagers can safely ignore the lint dependencies.
|
||||
|
||||
### Compiling
|
||||
```
|
||||
./configure && ninja
|
||||
```
|
||||
|
||||
Note: `configure` is a simple shell script (so not autotools) which supports variables like `PREFIX`.
|
||||
|
||||
### Installing
|
||||
```
|
||||
ninja install
|
||||
# DESTDIR is supported
|
||||
```
|
||||
|
||||
Debian users will probably want to use `checkinstall` instead.
|
||||
|
||||
An example AppArmor profile is provided at `usr.bin.badwolf`, please do some long runtime checks before shipping it or a modified version, help can be provided but with no support.
|
||||
|
||||
If you modify the icons, you'll need `inkscape` (command line only), to regenerate the bitmap versions. It isn't needed for a normal installation as the bitmap icons are bundled.
|
||||
|
||||
## Notes
|
||||
Most of the privacy/security stuff will be done with patches against WebKit as quite a lot isn't into [WebKitSettings](https://webkitgtk.org/reference/webkit2gtk/stable/WebKitSettings.html) and with generic WebKit extensions that should be reusable.
|
167
badwolf/badwolf.1
Executable file
|
@ -0,0 +1,167 @@
|
|||
.\" BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
.\" Copyright © 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.Dd 2022-07-13
|
||||
.Dt BADWOLF 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm badwolf
|
||||
.Nd minimalist and privacy-oriented web browser based on WebKitGTK
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Ar webkit/gtk options
|
||||
.Op Ar URLs or paths
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
is a minimalist browser that cares about privacy, it is based on WebKitGTK and thus also accepts WebKitGTK (and dependencies) flags and environment variables, unfortunately there doesn't seems to be manpages for theses.
|
||||
.Pp
|
||||
Runtime configuration specific to
|
||||
.Nm
|
||||
will probably get added at a later release.
|
||||
.Sh KEYBINDINGS
|
||||
The following section lists the keybinding by their action, each item is described by the widget the focus is on or
|
||||
.Aq any
|
||||
if it works for the whole window, followed by the keybind it grabs.
|
||||
.Bl -tag -width Ds
|
||||
.It webview Ctrl-Scroll
|
||||
Zooms the webpage in/out.
|
||||
.It webview Ctrl-0
|
||||
Resets webpage zoom to 100%.
|
||||
.It webview Ctrl-MousePrimary, webview MouseMiddle
|
||||
Opens the selected link in a new tab. (Note: JS still overrides the event)
|
||||
.It any Ctrl-t
|
||||
Creates a new tab (in a new session, similar as pressing the button)
|
||||
.It browser Ctrl-F4, browser Alt-d
|
||||
Closes the current tab
|
||||
.It browser Ctrl-f
|
||||
Focuses on the search entry
|
||||
.It browser Ctrl-l
|
||||
Focuses on the location(URL) entry
|
||||
.It browser Ctrl-Shift-r / Ctrl-r, browser F5
|
||||
Reloads the content in the current tab (with/without clearing cache)
|
||||
.It browser Escape
|
||||
Stops loading the content in the current tab
|
||||
.It browser F7
|
||||
Toggles caret browsing.
|
||||
.It browser F12
|
||||
Opens the web inspector.
|
||||
.It browser Ctrl-[ / Ctrl-]
|
||||
Go back/forward in current tab's history
|
||||
.It browser Ctrl-p
|
||||
Print the current page. (spawns a dialog)
|
||||
.It any Alt-Left / Alt-Right
|
||||
Go to the previous/next tab
|
||||
.It any F1
|
||||
Shows the about dialog
|
||||
.It any Alt-n
|
||||
Where n is any numeric-row key.
|
||||
Go to the n-th tab, 0 goes to the last one.
|
||||
.El
|
||||
.Ss DEFAULT ONES
|
||||
Here is a incomplete list of the default Webkit/GTK keybindings:
|
||||
.Bl -tag -width Ds
|
||||
.It any Ctrl-PageUp / Ctrl-PageDown
|
||||
Go to the previous/next tab
|
||||
.It search Ctrl-g / Ctrl-Shift-g
|
||||
When the search box is focused it goes to the Next/Previous search term.
|
||||
.It search Escape
|
||||
Cancels current search
|
||||
.It textarea Ctrl-;
|
||||
Insert Emoji
|
||||
.El
|
||||
.Sh ENVIRONMENT
|
||||
.Bl -tag -width Ds
|
||||
.It Ev BADWOLF_L10N
|
||||
A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and COUNTRY in ISO-3166.
|
||||
For example
|
||||
.Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" .
|
||||
When this variable isn't set, spelling isn't activated.
|
||||
A more generic variable name is also intended to be used in the future.
|
||||
.Pp
|
||||
To get the list of supported dictionaries execute
|
||||
.Ic enchant-lsmod-2 -list-dicts
|
||||
or before enchant 2.0:
|
||||
.Ic enchant-lsmod -list-dicts
|
||||
.El
|
||||
.Sh FILES
|
||||
The following paths are using
|
||||
.Xr sh 1
|
||||
syntax to correctly support XDG Base Directory Specification, you can use the
|
||||
.Xr echo 1
|
||||
command to check where it is on your system.
|
||||
.Pp
|
||||
.Bl -tag -width Ds -compact
|
||||
.It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
|
||||
WebKit-specific content-filter file, this allows to block unwanted content (ads, nagware, ...).
|
||||
For some introductory information about the format see:
|
||||
.Lk https://webkit.org/blog/3476/content-blockers-first-look/
|
||||
.Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
|
||||
.Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
|
||||
.Pp
|
||||
For a converter using AblockPlus-style filters, try:
|
||||
.Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
|
||||
.Pp
|
||||
For a ready-to-use file (that you should update periodically), try:
|
||||
.Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
|
||||
.It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
|
||||
This is where the compiled filters are stored, the file(s) in it are automatically generated and so shouldn't be edited.
|
||||
Documented here only for sandboxing / access-control purposes.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
|
||||
XBEL (XML Bookmark Exchange Language) file, known to be currently supported by:
|
||||
.Xr elinks 1 ,
|
||||
.Xr konqueror 1 ,
|
||||
.Xr kbookmarkeditor 1 .
|
||||
.Pp
|
||||
You can do a symbolic link from their path, but you might prefer to use
|
||||
.Lk https://www.w3.org/TR/xinclude/ XInclude
|
||||
which is natively supported by
|
||||
.Nm
|
||||
to automatically merge multiple XBEL files.
|
||||
.Pp
|
||||
Also the bookmark entries aren't re-sorted, so you might want to put your most frequently used ones at the top of the file.
|
||||
.Pp
|
||||
For more information about this format see:
|
||||
.Lk http://pyxml.sourceforge.net/topics/xbel/
|
||||
.Pp
|
||||
For an example XBEL file see:
|
||||
.Lk https://hacktivis.me/bookmarks.xbel
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
|
||||
Directory containing the
|
||||
.Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
|
||||
to be loaded into
|
||||
.Nm . Note: They aren't the JavaScript-based Web-Extensions supported by Firefox or Chrome, but native code in shared objects using the WebKitGTK API.
|
||||
.Pp
|
||||
Examples of useful extensions may be found at:
|
||||
.Lk https://hacktivis.me/git/badwolf-extensions
|
||||
.It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
|
||||
CSS files (respectively system and user-level) for styling
|
||||
.Nm
|
||||
interface.
|
||||
See
|
||||
.Lk https://docs.gtk.org/gtk3/css-properties.html
|
||||
for the properties being available.
|
||||
.Pp
|
||||
For testing your styles I would recommend using the
|
||||
.Ev GTK_DEBUG=interactive
|
||||
environment variable on launching
|
||||
.Nm
|
||||
and going to the CSS tab.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
|
||||
Directory containing JS userscripts (ending in
|
||||
.Ic .js )
|
||||
ran at the start of page loads,
|
||||
nesting down into iframes, useful to override website behaviors or add
|
||||
missing features to websites.
|
||||
.Pp
|
||||
Please note that for now unlike GreaseMonkey-style userscripts, they are
|
||||
always run, regardless of the hostname / URLs.
|
||||
.El
|
||||
.Sh AUTHORS
|
||||
.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me
|
||||
.Sh BUGS
|
||||
You can submit contributions or tickets to
|
||||
.Lk https://sr.ht/~lanodan/badwolf/
|
||||
with
|
||||
.Xr git-send-email 1
|
||||
for patches.
|
1179
badwolf/badwolf.c
Executable file
189
badwolf/badwolf.de.1
Executable file
|
@ -0,0 +1,189 @@
|
|||
.\" BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
.\" Copyright © 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.\"*******************************************************************
|
||||
.\"
|
||||
.\" This file was generated with po4a. Translate the source file.
|
||||
.\"
|
||||
.\"*******************************************************************
|
||||
.Dd 2022-07-13
|
||||
.Dt BADWOLF 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm badwolf
|
||||
.Nd minimalistischer und privatsphäre-orientierter Webbrowser basierend auf WebKitGTK
|
||||
.Sh ÜBERSICHT
|
||||
.Nm
|
||||
.Op Ar WebKit-/GTK-Optionen
|
||||
.Op Ar URLs oder Pfade
|
||||
.Sh BESCHREIBUNG
|
||||
.Nm
|
||||
ist ein minimalistischer Webbrowser, der die Privatssphäre seiner
|
||||
Nutzer respektiert. Er basiert auf WebKitGTK und akzeptiert daher alle
|
||||
Optionen und Umgebungsvariablen, die WebKitGTK (und Abhängigkeiten) auch
|
||||
akzeptieren, leider gibt es dafür keine Manpages.
|
||||
.Pp
|
||||
Laufzeitspezifische Konfigurationsmöglichkeiten für
|
||||
.Nm
|
||||
werden
|
||||
wahrscheinlich in einer späteren Version hinzugefügt.
|
||||
.Sh TASTENKOMBINATIONEN
|
||||
Der folgende Abschnitt listet die unterstützten Tastenkombinationen und ihre
|
||||
Funktionen auf. Vor jeder Tastenkombination steht der greifende Kontext.
|
||||
.Bl -tag -width Ds
|
||||
.It webview Ctrl-Scroll
|
||||
Zoomt die Website rein/raus.
|
||||
.It webview Ctrl-0
|
||||
Setzt den Zoom auf 100% zurück.
|
||||
.It webview Ctrl-MousePrimary, webview MouseMiddle
|
||||
Öffnet den hervorgehobenen Link in einem neuen Tab. (Hinweis: Dieses
|
||||
Verhalten kann mit Javascript manipuliert werden)
|
||||
.It any Ctrl-t
|
||||
Eröffnet einen neuen Tab in einer neuen Sitzung (ähnlich wie der "Neuer
|
||||
Tab"-Knopf)
|
||||
.It browser Ctrl-F4, browser Alt-d
|
||||
Schließt den aktuellen Tab
|
||||
.It browser Ctrl-f
|
||||
Hebt das Suchfeld hervor
|
||||
.It browser Ctrl-l
|
||||
Hebt die Addresszeile hervor
|
||||
.It browser Ctrl-Shift-r / Ctrl-r, browser F5
|
||||
Lädt den aktuellen Tab neu (jeweils mit und ohne den Cache zu leeren)
|
||||
.It browser Escape
|
||||
Bricht das Laden ab
|
||||
.It browser F7
|
||||
Aktiviert den Tastaturmodus (Navigation mit dem Textcursor)
|
||||
.It browser F12
|
||||
Öffnet die Entwickleroptionen
|
||||
.It browser Ctrl-[ / Ctrl-]
|
||||
Zur vorherigen/nächsten Seite im Suchverlauf gehen
|
||||
.It browser Ctrl-p
|
||||
Druckt die aktuelle Seite aus. (Eröffnet Dialogfenster)
|
||||
.It any Alt-Left / Alt-Right
|
||||
Wechseln zum vorherigen/nächsten Tab
|
||||
.It any F1
|
||||
Zeigt Informationen über das Programm
|
||||
.It any Alt-n
|
||||
n ist eine Zahl. Wechseln zum Tab n. 0 wechselt zum letzten Tab.
|
||||
.El
|
||||
.Ss STANDARDTASTENKOMBINATIONEN
|
||||
Im Folgenden befindet sich eine unvollständige Liste mit standartmäßigen
|
||||
Webkit-/GTK-Tastenkombinationen:
|
||||
.Bl -tag -width Ds
|
||||
.It any Ctrl-PageUp / Ctrl-PageDown
|
||||
Wechseln zum vorherigen/nächsten Tab
|
||||
.It search Ctrl-g / Ctrl-Shift-g
|
||||
Zum nächsten/vorherigen Suchtreffer gehen
|
||||
.It search Escape
|
||||
Bricht die Suche ab
|
||||
.It textarea Ctrl-;
|
||||
Emoji einfügen😚️
|
||||
.El
|
||||
.Sh UMGEBUNGSVARIABLEN
|
||||
.Bl -tag -width Ds
|
||||
.It Ev BADWOLF_L10N
|
||||
Eine mit Doppelpunkten getrennte List im Format sprache_LAND wo die sprache
|
||||
ISO-639 und das LAND ISO-3166 ist. Z.B.:
|
||||
.Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" .
|
||||
Wenn diese Variable nicht gesetzt ist,
|
||||
gibt es keine Rechtschreibprüfung. Der Variablenname könnte in der Zukunft
|
||||
durch einen generischeren ersetzt werden.
|
||||
.Pp
|
||||
Um eine List mit installierten Sprächen zu bekommen, muss
|
||||
.Ic enchant-lsmod-2 -list-dicts
|
||||
ausgeführt werden. Bei Versionen vor enchant
|
||||
2.0:
|
||||
.Ic enchant-lsmod -list-dicts
|
||||
.El
|
||||
.Sh DATEIEN
|
||||
Die im Folgenden aufgelistetene Pfade benutzen
|
||||
.Xr sh 1
|
||||
-Syntaxe, um der
|
||||
XDG-Base-Directory-Specifation gerecht zu werden. Du kannst den Befehl
|
||||
.Xr echo 1
|
||||
benutzen, um zu gucken, wo das auf dem Computer ist.
|
||||
.Pp
|
||||
.Bl -tag -width Ds -compact
|
||||
.It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
|
||||
WebKit-spezifischer Inhaltsfilter-Datei, mit der unerwünschte Inhalte
|
||||
(z.B. Werbung, Schadsoftware, ...) geblockt werden können. Für mehr
|
||||
Informationen, siehe:
|
||||
.Lk https://webkit.org/blog/3476/content-blockers-first-look/
|
||||
.Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
|
||||
.Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
|
||||
.Pp
|
||||
Es gibt einen Übersetzer, der AdblockPlus-Filterlisten in Webkit-Blocklisten
|
||||
übersetzen kann:
|
||||
.Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
|
||||
.Pp
|
||||
Für eine fertige Datei (die regelmäßig aktualisiert werden sollte), siehe:
|
||||
.Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
|
||||
.It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
|
||||
Hier werden kompilierte Filter gespeichert. Diese Dateien werden automatisch
|
||||
generiert und sollten deswegen nicht bearbeitet werden. Diese Datei wird
|
||||
hier überhaupt nur dokumentiert, damit sie in Sandboxen/Zugriffskontrollen
|
||||
eingearbeitet werden kann.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
|
||||
XBEL (XML Bookmark Exchange Language) Datei, wird momentan unterstützt von:
|
||||
.Xr elinks 1 ,
|
||||
.Xr konqueror 1 ,
|
||||
.Xr kbookmarkeditor 1 .
|
||||
.Pp
|
||||
Du kannst einfach eine Verknüpfung zu deren Dateien erstellen, aber
|
||||
vielleicht möchtest du lieber
|
||||
.Lk https://www.w3.org/TR/xinclude/ XInclude
|
||||
benutzen, welches von
|
||||
.Nm
|
||||
systemeigen unterstützt wird und mehrer
|
||||
XBEL-Dateien zusammenfügt.
|
||||
.Pp
|
||||
Außerdem werden die Lesezeicheneinträge nicht neusortiert, deswegen ist es
|
||||
eventuell gewünscht, die am häufigsten genutzen Einträge an den Anfang der
|
||||
Datei zu schieben.
|
||||
.Pp
|
||||
Für weitere Informationen über dieses Format siehe:
|
||||
.Lk http://pyxml.sourceforge.net/topics/xbel/
|
||||
.Pp
|
||||
Für eine Beispiel-XBEL-Datei siehe:
|
||||
.Lk https://hacktivis.me/bookmarks.xbel
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
|
||||
Verzeichnis mit den
|
||||
.Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
|
||||
die in
|
||||
.Nm geladen werden sollen. Hinweis: Es handelt sich dabei nicht um Javascript-basierte Erweitungen wie man sie von Firefox oder Chrome kennt, sondern um systemeigenen Code aus Shared Objects der WebKitGTK API.
|
||||
.Pp
|
||||
Für Beispiele nützlicher Erweiterungen siehe:
|
||||
.Lk https://hacktivis.me/git/badwolf-extensions
|
||||
.It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
|
||||
CSS-Dateien (jeweils System und User-Ebene), um das Aussehen das Interfaces
|
||||
anzupassen. Siehe
|
||||
.Lk https://docs.gtk.org/gtk3/css-properties.html
|
||||
für die zur Verfügung stehen Eigenschaften.
|
||||
.Pp
|
||||
Für das Austesten eines Aussehens ist es zu empfehlen die Umgebungsvariable
|
||||
.Ev GTK_DEBUG=interactive
|
||||
biem Start zu setzen und dann in den CSS tab zu
|
||||
gehen.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
|
||||
Verzeichnis, welches die JavaScript-Userscripts enthält (Dateiendung
|
||||
.Ic .js ) ,
|
||||
die am Start des Ladens jeder Seite ausgeführt werden und sich auch
|
||||
in iframes verschachteln. Nützlich um Website-Verhalten zu manipulieren oder
|
||||
fehlende Funktionen zu ergänzen.
|
||||
.Pp
|
||||
Es ist anzumerken, dass — anders als bei GreaseMonkey-artigen Userscripts —
|
||||
die
|
||||
.Nm
|
||||
-Userscripts immer ausgeführt werden, unabhängig von
|
||||
Hostname/URLs.
|
||||
.El
|
||||
.Sh AUTOREN.
|
||||
.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me ,
|
||||
Übersetzung von Ben Kaps
|
||||
.Sh BUGS
|
||||
Verbesserungen oder Fehlerberichte können unter
|
||||
.Lk https://sr.ht/~lanodan/badwolf/
|
||||
mit
|
||||
.Xr git-send-email 1
|
||||
für Patches eingereicht werden.
|
20
badwolf/badwolf.desktop
Executable file
|
@ -0,0 +1,20 @@
|
|||
# https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/
|
||||
# SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
[Desktop Entry]
|
||||
Version=1.1
|
||||
Type=Application
|
||||
Categories=Network;WebBrowser
|
||||
Comment=A minimalist and privacy-oriented web browser
|
||||
Comment[fr]=Un navigateur web minimaliste et orienté vers le respect de la vie privée
|
||||
Comment[tr]=Sadelik ve gizlilik odaklı web tarayıcısı
|
||||
Exec=badwolf %U
|
||||
GenericName=Web Browser
|
||||
GenericName[fr]=Navigateur Web
|
||||
GenericName[tr]=Web Tarayıcısı
|
||||
Icon=badwolf
|
||||
Keywords=Internet;WWW;Browser;Web;WebKit;WebKitGTK
|
||||
Keywords[fr]=Internet;WWW;Browser;Web;Surfer;Navigateur;WebKit;WebKitGTK
|
||||
Keywords[tr]=Internet;WWW;Browser;Web;WebKit;WebKitGTK;İnternet;Tarayıcı;
|
||||
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https
|
||||
Name=Badwolf
|
190
badwolf/badwolf.fr.1
Executable file
|
@ -0,0 +1,190 @@
|
|||
.\" BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
.\" Copyright © 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.\"*******************************************************************
|
||||
.\"
|
||||
.\" This file was generated with po4a. Translate the source file.
|
||||
.\"
|
||||
.\"*******************************************************************
|
||||
.Dd 2022-07-13
|
||||
.Dt BADWOLF 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm badwolf
|
||||
.Nd navigateur minimaliste et orienté vie-privée basé sur WebKitGTK
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Op Ar options webkit/gtk
|
||||
.Op Ar URLs or chemins
|
||||
.Sh DESCRIPTION
|
||||
.Nm
|
||||
est un navigateur minimaliste qui prend soin de la vie privée, c'est
|
||||
basé WebKitGTK et accept donc les options et variables d'environements de
|
||||
WebKitGTK et ses dépendances, malheuresement il ne semble pas avoir de pages
|
||||
de man pour celles-ci.
|
||||
.Pp
|
||||
Une configuration dynamique spécifique à
|
||||
.Nm
|
||||
sera sans doute rajoutée
|
||||
dans une version suivante.
|
||||
.Sh RACCOURCIS
|
||||
Cette section liste les raccourcis et leurs actions, chaque point est décris
|
||||
avec le widget actif ou avec
|
||||
.Aq tout
|
||||
quand il fonctionne sur la fenêtre
|
||||
entière, suivit par le raccourcis.
|
||||
.Bl -tag -width Ds
|
||||
.It vueweb Ctrl-Défilement
|
||||
(Dé)-Grossir le zoom de la page.
|
||||
.It vueweb Ctrl-0
|
||||
Remettre le zoom de la page à 100%.
|
||||
.It vueweb Ctrl-SourisPremier, vueweb SourisMilieu
|
||||
Ouvrir le lien sélectionné dans un nouvel onglet. (Note: JS modifie
|
||||
quand-même l'action)
|
||||
.It tout Ctrl-t
|
||||
Créer un nouvel onglet (dans une nouvelle session, comme un apuis sur le
|
||||
bouton dédié)
|
||||
.It navigateur Ctrl-F4, navigateur Alt-d
|
||||
Fermer l'onglet courant.
|
||||
.It navigateur Ctrl-f
|
||||
Aller dans le champ de recherche.
|
||||
.It navigateur Ctrl-l
|
||||
Aller dans la barre d'URL.
|
||||
.It navigateur Ctrl-Maj-r / Ctrl-r, navigateur F5
|
||||
Recharger le contenu dans l'onglet courant (avec/sans nettoyer le cache).
|
||||
.It navigateur Échap
|
||||
Arrêter le chargement dans l'onglet courant.
|
||||
.It navigateur F7
|
||||
(Dé)-Activer la navigation par curseur.
|
||||
.It navigateur F12
|
||||
Ouvrir les outils de dévelopement.
|
||||
.It navigateur Ctrl-[ / Ctrl-]
|
||||
Naviguer dans l'historique courrant précédent/suivant.
|
||||
.It navigateur Ctrl-p
|
||||
Imprimer la page courante. (ouvre une nouvelle fenêtre)
|
||||
.It tout Alt-Gauche / Alt-Droite
|
||||
Aller à l'onglet précédent/suivant.
|
||||
.It tout F1
|
||||
Montrer la fenêtre d'À Propos.
|
||||
.It tout Alt-n
|
||||
Où n est n'importe quelle touche de la barre numérique.
|
||||
Aller à l'onglet n, 0 va au dernier.
|
||||
.El
|
||||
.Ss PAR DÉFAULTS
|
||||
Ceci est une liste incomplète des raccourcis par défaults dans WebKit/GTK:
|
||||
.Bl -tag -width Ds
|
||||
.It tout Ctrl-PageUp / Ctrl-PageDown
|
||||
Aller à l'onglet précédent/suivant.
|
||||
.It recherche Ctrl-g / Ctrl-Maj-g
|
||||
Quand le champ de recherche est actif, aller au résultat précédent/suivant.
|
||||
.It recherche Échap
|
||||
Annule la recherche actuelle.
|
||||
.It champ-texte Ctrl-;
|
||||
Insérer un Émoji
|
||||
.El
|
||||
.Sh ENVIRONMENT
|
||||
.Bl -tag -width Ds
|
||||
.It Ev BADWOLF_L10N
|
||||
Une liste séparé par des deux-points dans le format langue_PAYS où la langue
|
||||
est en ISO-639 et le PAYS en ISO-3166.
|
||||
Par example
|
||||
.Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" .
|
||||
Quand cette variable n'est pas configuré, la correction orthographique est
|
||||
désactivée.
|
||||
Un nom plus générique est voulu pour le futur.
|
||||
.Pp
|
||||
Pour avoir la liste des dictionaires installés, executez:
|
||||
.Ic enchant-lsmod-2 -list-dicts
|
||||
ou avant enchant 2.0:
|
||||
.Ic enchant-lsmod -list-dicts
|
||||
.El
|
||||
.Sh FICHIERS
|
||||
Les chemins suivants utilisent la syntaxe de
|
||||
.Xr sh 1
|
||||
pour correctement
|
||||
supporter la XDG Base Directory Specification, vous pouver utiliser la
|
||||
commande
|
||||
.Xr echo 1
|
||||
pour vérifier où cela se trouve sur votre système.
|
||||
.Pp
|
||||
.Bl -tag -width Ds -compact
|
||||
.It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
|
||||
Fichier content-filter spécifique à WebKit, cela permet de blocker le
|
||||
contenu indésirable (pubs, nagware, …).
|
||||
Pour une introduction au format, voir (en anglais):
|
||||
.Lk https://webkit.org/blog/3476/content-blockers-first-look/
|
||||
.Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
|
||||
.Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
|
||||
.Pp
|
||||
Pour un convertiseur de filtres compatibles AdBlockPlus, essayez:
|
||||
.Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
|
||||
.Pp
|
||||
Pour un fichier prêt à l'usage (que vous devrez mettre à jour
|
||||
périodiquement), essayez:
|
||||
.Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
|
||||
.It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
|
||||
Stockage des filtres compilés, les fichiers présents sont automatiquement
|
||||
générés et ne doivent pas être édité.
|
||||
Documenté ici seulement pour les isolations ou la gestion des contrôle
|
||||
d'accès.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
|
||||
Fichier XBEL (XML Bookmark Exchange Language; Language XML d'Échange de
|
||||
Marques-Pages), connu pour être supporté par:
|
||||
.Xr elinks 1 ,
|
||||
.Xr konqueror 1 ,
|
||||
.Xr kbookmarkeditor 1 .
|
||||
.Pp
|
||||
Vous pouvez faire un lien symbolique depuis leur fichiers, mais vous pouvez
|
||||
aussi utiliser
|
||||
.Lk https://www.w3.org/TR/xinclude/ XInclude
|
||||
qui est supporté nativement par
|
||||
.Nm
|
||||
pour automatiquement fusionner
|
||||
plusieurs fichiers XBEL.
|
||||
.Pp
|
||||
Aussi les marques-pages ne sont pas re-triés, vous pouvez donc mettre les
|
||||
plus fréquement utilisés au début du fichier.
|
||||
.Pp
|
||||
Pour plus d'information à propos du format, voir (en anglais):
|
||||
.Lk http://pyxml.sourceforge.net/topics/xbel/
|
||||
.Pp
|
||||
Pour un example de fichier XBEL voir:
|
||||
.Lk https://hacktivis.me/bookmarks.xbel
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
|
||||
Répertoire contenant les
|
||||
.Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
|
||||
pour être chargés dans
|
||||
.Nm . Note\ : Ce ne sont pas les Web-Extensions basé sur JavaScript et supporté par Firefox ou Chrome, mais du code natif dans des shared objects qui utilisent l'API WebKitGTK.
|
||||
.Pp
|
||||
Des examples de quelques extensions utiles peuvent être trouvés sur:
|
||||
.Lk https://hacktivis.me/git/badwolf-extensions
|
||||
.It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
|
||||
Fichiers CSS (respectivement système et utilisateur) pour changer le style
|
||||
de l'interface de
|
||||
.Nm .
|
||||
Voir
|
||||
.Lk https://docs.gtk.org/gtk3/css-properties.html
|
||||
pour la liste des propriétés disponibles.
|
||||
.Pp
|
||||
Pour tester les styles je recommende d'utiliser la variable d'environemnt
|
||||
.Ev GTK_DEBUG=interactive
|
||||
et d'aller à l'onglet CSS.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
|
||||
Dossier contenant les userscripts JavaScript (finisant en
|
||||
.Ic .js )
|
||||
lancés
|
||||
à chaque chargement de page, descendant dans les iframes, utile pour changer
|
||||
le comportement ou rajouter des fonctionalitées aux sites web.
|
||||
.Pp
|
||||
Veuillez noter que pour l'instant, contrairement aux userscripts à la
|
||||
GreaseMonkey, ils sont toujours exécutés, sans filtrage de domaines / URLs.
|
||||
.El
|
||||
.Sh AUTHORS
|
||||
.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me
|
||||
.Sh BUGS
|
||||
Vous pouvez soumettre des contributions ou des tickets à
|
||||
.Lk https://sr.ht/~lanodan/badwolf/
|
||||
avec
|
||||
.Xr git-send-email 1
|
||||
pour les modifications.
|
62
badwolf/badwolf.h
Executable file
|
@ -0,0 +1,62 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#ifndef BADWOLF_H_INCLUDED
|
||||
#define BADWOLF_H_INCLUDED
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <inttypes.h> /* uint64_t */
|
||||
#include <webkit2/webkit2.h>
|
||||
|
||||
#if !WEBKIT_CHECK_VERSION(2, 32, 0)
|
||||
#error WebkitGTK 2.32.0 is the latest supported version for badwolf.
|
||||
#endif
|
||||
|
||||
#ifdef UNUSED
|
||||
#error UNUSED is already defined
|
||||
#elif defined(__GNUC__)
|
||||
#define UNUSED(x) UNUSED_##x __attribute__((unused))
|
||||
#else
|
||||
#define UNUSED(x) x
|
||||
#endif
|
||||
|
||||
extern const gchar *homepage;
|
||||
extern const gchar *version;
|
||||
|
||||
struct Window
|
||||
{
|
||||
GtkWidget *main_window;
|
||||
GtkWidget *notebook;
|
||||
GtkWidget *new_tab;
|
||||
GtkWidget *downloads_tab;
|
||||
WebKitUserContentManager *content_manager;
|
||||
WebKitUserContentFilterStore *content_store;
|
||||
};
|
||||
|
||||
struct Client
|
||||
{
|
||||
GtkWidget *box;
|
||||
|
||||
GtkWidget *toolbar;
|
||||
GtkWidget *back;
|
||||
GtkWidget *forward;
|
||||
GtkWidget *javascript;
|
||||
GtkWidget *auto_load_images;
|
||||
GtkWidget *location;
|
||||
|
||||
uint64_t context_id;
|
||||
WebKitWebView *webView;
|
||||
struct Window *window;
|
||||
|
||||
GtkWidget *statusbar;
|
||||
GtkWidget *statuslabel;
|
||||
GtkWidget *search;
|
||||
};
|
||||
|
||||
GtkWidget *badwolf_new_tab_box(const gchar *title, struct Client *browser);
|
||||
void webView_tab_label_change(struct Client *browser, const gchar *title);
|
||||
struct Client *
|
||||
new_browser(struct Window *window, const gchar *target_url, struct Client *old_browser);
|
||||
int badwolf_new_tab(GtkNotebook *notebook, struct Client *browser, bool auto_switch);
|
||||
gint badwolf_get_tab_position(GtkContainer *notebook, GtkWidget *child);
|
||||
#endif /* BADWOLF_H_INCLUDED */
|
164
badwolf/badwolf.inkscape.svg
Executable file
|
@ -0,0 +1,164 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:version="1.0rc1 (09960d6f05, 2020-04-09)"
|
||||
sodipodi:docname="badwolf.inkscape.svg"
|
||||
id="svg17"
|
||||
viewBox="0 0 16.93333 16.93333"
|
||||
version="1.1"
|
||||
height="64"
|
||||
width="64">
|
||||
<metadata
|
||||
id="metadata21">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
inkscape:current-layer="g16"
|
||||
inkscape:window-maximized="0"
|
||||
inkscape:window-y="18"
|
||||
inkscape:window-x="0"
|
||||
inkscape:cy="32"
|
||||
inkscape:cx="-34.886275"
|
||||
inkscape:zoom="5.9765625"
|
||||
showgrid="false"
|
||||
id="namedview19"
|
||||
inkscape:window-height="1062"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff"
|
||||
inkscape:document-rotation="0" />
|
||||
<defs
|
||||
id="defs9">
|
||||
<linearGradient
|
||||
id="linearGradient880">
|
||||
<stop
|
||||
style="stop-color:#00ffd6;stop-opacity:1"
|
||||
stop-color="#139e7c"
|
||||
offset="0"
|
||||
id="stop876" />
|
||||
<stop
|
||||
style="stop-color:#007f64;stop-opacity:1"
|
||||
stop-color="#122548"
|
||||
offset="1"
|
||||
id="stop878" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient844"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop840"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop842"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<clipPath
|
||||
id="clippy">
|
||||
<rect
|
||||
ry="1"
|
||||
y="0"
|
||||
x="0"
|
||||
height="16.933333"
|
||||
width="16.933333"
|
||||
id="rect4" />
|
||||
</clipPath>
|
||||
<linearGradient
|
||||
id="a">
|
||||
<stop
|
||||
id="stop2"
|
||||
offset="0"
|
||||
stop-color="#139e7c" />
|
||||
<stop
|
||||
id="stop4"
|
||||
offset="1"
|
||||
stop-color="#122548" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
fy="-4.2398162"
|
||||
fx="8.6972151"
|
||||
xlink:href="#a"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.612,0.05608289,-0.03812291,-1.775534,30.49128,-9.106413)"
|
||||
r="8.4666672"
|
||||
cy="-4.2398162"
|
||||
cx="8.6972151"
|
||||
id="b" />
|
||||
<linearGradient
|
||||
xlink:href="#a"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.340793,0,0,1.340793,-5.009645,-4.9950368)"
|
||||
y2="13.79657"
|
||||
y1="9.051465"
|
||||
x2="6.0263619"
|
||||
x1="9.1526928"
|
||||
id="c" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="4.7058144"
|
||||
x2="-10.735905"
|
||||
y1="4.7058144"
|
||||
x1="-10.466779"
|
||||
id="linearGradient846"
|
||||
xlink:href="#linearGradient844"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="11.681454"
|
||||
x2="6.7958536"
|
||||
y1="8.9934816"
|
||||
x1="7.463346"
|
||||
id="linearGradient874"
|
||||
xlink:href="#linearGradient880"
|
||||
inkscape:collect="always" />
|
||||
</defs>
|
||||
<g
|
||||
clip-path="url(#clippy)"
|
||||
id="g16">
|
||||
<rect
|
||||
style="fill-opacity:1;fill:url(#b)"
|
||||
id="rect11"
|
||||
fill="url(#b)"
|
||||
ry="0"
|
||||
height="16.93333"
|
||||
width="16.93333" />
|
||||
<path
|
||||
style="stroke-width:0.50270823;stroke-miterlimit:4;stroke-dasharray:none;stroke:#23e0b7;stroke-opacity:1;fill-opacity:1;fill:url(#linearGradient846)"
|
||||
id="path13"
|
||||
stroke-width="0.264583"
|
||||
stroke="#47b79f"
|
||||
d="m 21.86801,-1.9920238 a 13.40211,8.185254 0 0 1 -6.713234,7.092927 13.40211,8.185254 0 0 1 -13.41427,-0.012891 13.40211,8.185254 0 0 1 -6.676652,-7.105795 l 13.40204,0.025759 z"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
id="wolf"
|
||||
style="mix-blend-mode:luminosity;fill:#120d09;fill-opacity:1;stroke:url(#linearGradient874);stroke-width:0.674952;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
stroke-width="0.569064"
|
||||
stroke="url(#c)"
|
||||
fill-rule="evenodd"
|
||||
fill="#0f0805"
|
||||
d="M 5.954321,19.118114 C 6.279375,16.458717 6.8910042,15.96845 5.7885535,13.873872 5.195892,12.824843 3.5059475,11.558594 2.6479315,10.539665 2.1673827,9.7904655 1.0434685,9.2171762 0.3615065,7.7493392 0.201822,6.7648665 2.5855305,8.9732112 3.2563495,8.9366162 3.5137348,8.6517205 1.6556185,6.7595682 1.8277525,6.0733512 1.97089,5.5027309 2.0400037,4.9353402 2.6089912,4.5036212 c 1.197317,-0.3311996 3.39131,2.812714 4.927271,3.260379 2.110609,-0.7248708 3.1742058,1.490123 4.8202378,1.830078 1.322712,0.1565739 3.207405,1.5936848 4.252409,2.9707628 -0.845016,0.590474 -3.044526,-0.706301 -4.410436,-0.108108 -0.538115,0.825242 1.099559,5.219231 1.386259,5.733128"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.3 KiB |
BIN
badwolf/badwolf.o
Executable file
134
badwolf/badwolf.svg
Executable file
|
@ -0,0 +1,134 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
id="svg17"
|
||||
viewBox="0 0 16.93333 16.93333"
|
||||
version="1.1"
|
||||
height="64"
|
||||
width="64">
|
||||
<metadata
|
||||
id="metadata21">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs9">
|
||||
<linearGradient
|
||||
id="linearGradient880">
|
||||
<stop
|
||||
style="stop-color:#00ffd6;stop-opacity:1"
|
||||
stop-color="#139e7c"
|
||||
offset="0"
|
||||
id="stop876" />
|
||||
<stop
|
||||
style="stop-color:#007f64;stop-opacity:1"
|
||||
stop-color="#122548"
|
||||
offset="1"
|
||||
id="stop878" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient844">
|
||||
<stop
|
||||
id="stop840"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop842"
|
||||
offset="1"
|
||||
style="stop-color:#000000;stop-opacity:0;" />
|
||||
</linearGradient>
|
||||
<clipPath
|
||||
id="clippy">
|
||||
<rect
|
||||
ry="1"
|
||||
y="0"
|
||||
x="0"
|
||||
height="16.933333"
|
||||
width="16.933333"
|
||||
id="rect4" />
|
||||
</clipPath>
|
||||
<linearGradient
|
||||
id="a">
|
||||
<stop
|
||||
id="stop2"
|
||||
offset="0"
|
||||
stop-color="#139e7c" />
|
||||
<stop
|
||||
id="stop4"
|
||||
offset="1"
|
||||
stop-color="#122548" />
|
||||
</linearGradient>
|
||||
<radialGradient
|
||||
fy="-4.2398162"
|
||||
fx="8.6972151"
|
||||
xlink:href="#a"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(-2.612,0.05608289,-0.03812291,-1.775534,30.49128,-9.106413)"
|
||||
r="8.4666672"
|
||||
cy="-4.2398162"
|
||||
cx="8.6972151"
|
||||
id="b" />
|
||||
<linearGradient
|
||||
xlink:href="#a"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1.340793,0,0,1.340793,-5.009645,-4.9950368)"
|
||||
y2="13.79657"
|
||||
y1="9.051465"
|
||||
x2="6.0263619"
|
||||
x1="9.1526928"
|
||||
id="c" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="4.7058144"
|
||||
x2="-10.735905"
|
||||
y1="4.7058144"
|
||||
x1="-10.466779"
|
||||
id="linearGradient846"
|
||||
xlink:href="#linearGradient844" />
|
||||
<linearGradient
|
||||
gradientUnits="userSpaceOnUse"
|
||||
y2="11.681454"
|
||||
x2="6.7958536"
|
||||
y1="8.9934816"
|
||||
x1="7.463346"
|
||||
id="linearGradient874"
|
||||
xlink:href="#linearGradient880" />
|
||||
</defs>
|
||||
<g
|
||||
clip-path="url(#clippy)"
|
||||
id="g16">
|
||||
<rect
|
||||
style="fill-opacity:1;fill:url(#b)"
|
||||
id="rect11"
|
||||
fill="url(#b)"
|
||||
ry="0"
|
||||
height="16.93333"
|
||||
width="16.93333" />
|
||||
<path
|
||||
style="stroke-width:0.50270823;stroke-miterlimit:4;stroke-dasharray:none;stroke:#23e0b7;stroke-opacity:1;fill-opacity:1;fill:url(#linearGradient846)"
|
||||
id="path13"
|
||||
stroke-width="0.264583"
|
||||
stroke="#47b79f"
|
||||
d="m 21.86801,-1.9920238 a 13.40211,8.185254 0 0 1 -6.713234,7.092927 13.40211,8.185254 0 0 1 -13.41427,-0.012891 13.40211,8.185254 0 0 1 -6.676652,-7.105795 l 13.40204,0.025759 z" />
|
||||
<path
|
||||
id="wolf"
|
||||
style="mix-blend-mode:luminosity;fill:#120d09;fill-opacity:1;stroke:url(#linearGradient874);stroke-width:0.674952;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
stroke-width="0.569064"
|
||||
stroke="url(#c)"
|
||||
fill-rule="evenodd"
|
||||
fill="#0f0805"
|
||||
d="M 5.954321,19.118114 C 6.279375,16.458717 6.8910042,15.96845 5.7885535,13.873872 5.195892,12.824843 3.5059475,11.558594 2.6479315,10.539665 2.1673827,9.7904655 1.0434685,9.2171762 0.3615065,7.7493392 0.201822,6.7648665 2.5855305,8.9732112 3.2563495,8.9366162 3.5137348,8.6517205 1.6556185,6.7595682 1.8277525,6.0733512 1.97089,5.5027309 2.0400037,4.9353402 2.6089912,4.5036212 c 1.197317,-0.3311996 3.39131,2.812714 4.927271,3.260379 2.110609,-0.7248708 3.1742058,1.490123 4.8202378,1.830078 1.322712,0.1565739 3.207405,1.5936848 4.252409,2.9707628 -0.845016,0.590474 -3.044526,-0.706301 -4.410436,-0.108108 -0.538115,0.825242 1.099559,5.219231 1.386259,5.733128" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 4.4 KiB |
186
badwolf/badwolf.tr.1
Executable file
|
@ -0,0 +1,186 @@
|
|||
.\" BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
.\" Copyright © 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.\"*******************************************************************
|
||||
.\"
|
||||
.\" This file was generated with po4a. Translate the source file.
|
||||
.\"
|
||||
.\"*******************************************************************
|
||||
.Dd 2022-07-13
|
||||
.Dt BADWOLF 1
|
||||
.Os
|
||||
.Sh AD
|
||||
.Nm badwolf
|
||||
.Nd WebKitGTK tabanlı sade ve gizlilik odaklı web tarayıcısı
|
||||
.Sh ÖZET
|
||||
.Nm
|
||||
.Op Ar webkit/gtk seçenekleri
|
||||
.Op Ar URL veya yollar
|
||||
.Sh AÇIKLAMA
|
||||
.Nm
|
||||
gizliliğe önem veren sade bir tarayıcıdır, WebKitGTK tabanlıdır ve bu
|
||||
nedenle WebKitGTK (ve bağımlılıkları) seçeneklerini ve ortam değişkenlerini
|
||||
de kabul eder, ne yazık ki bunlar için kılavuz sayfası yok gibi görünüyor.
|
||||
.Pp
|
||||
.Nm
|
||||
’e özgü çalışma zamanı yapılandırması muhtemelen daha sonraki bir
|
||||
sürümde eklenecek.
|
||||
.Sh TUŞ ATAMALARI
|
||||
Aşağıdaki bölüm tuş atamalarını eylemlerine göre listeler, her öge odağın
|
||||
üzerinde olduğu widget ile veya tüm pencere için çalışıyorsa
|
||||
.Aq tümü
|
||||
ile, ardından yakaladığı tuş ataması ile açıklanmaktadır.
|
||||
.Bl -tag -width Ds
|
||||
.It web_görünümü Ctrl-Scroll
|
||||
Web sayfasını yakınlaştırır/uzaklaştırır.
|
||||
.It web_görünümü Ctrl-0
|
||||
Web sayfasının yakınlaştırmasını %100 olarak sıfırlar.
|
||||
.It webview Ctrl-MousePrimary, webview MouseMiddle
|
||||
Opens the selected link in a new tab. (Note: JS still overrides the event)
|
||||
.It tümü Ctrl-t
|
||||
Yeni bir sekme oluşturur (yeni bir oturumda, düğmeye basmaya benzer şekilde)
|
||||
.It tarayıcı Ctrl-F4, tarayıcı Alt-d
|
||||
Geçerli sekmeyi kapatır
|
||||
.It tarayıcı Ctrl-f
|
||||
Arama girişine odaklanır
|
||||
.It tarayıcı Ctrl-l
|
||||
Konum (URL) girişine odaklanır
|
||||
.It tarayıcı Ctrl-Shift-r / Ctrl-r, tarayıcı F5
|
||||
Geçerli sekmedeki içeriği yeniden yükler (önbelleği temizleyerek/önbelleği
|
||||
temizlemeden)
|
||||
.It tarayıcı Escape
|
||||
Geçerli sekmedeki içeriğin yüklenmesini durdurur
|
||||
.It tarayıcı F7
|
||||
İmleç gezinmesini açar/kapatır.
|
||||
.It tarayıcı F12
|
||||
Web inceleyicisini açar.
|
||||
.It tarayıcı Ctrl-[ / Ctrl-]
|
||||
Geçerli sekmenin geçmişinde geri/ileri git
|
||||
.It tarayıcı Ctrl-p
|
||||
Geçerli sayfayı yazdır. (bir iletişim kutusu açar)
|
||||
.It tümü Alt-Left / Alt-Right
|
||||
Önceki/sonraki sekmeye git
|
||||
.It tümü F1
|
||||
Hakkında iletişim kutusunu göster
|
||||
.It tümü Alt-n
|
||||
n herhangi bir sayısal satır tuşudur. n'inci sekmeye git, 0 son sekmeye
|
||||
gider.
|
||||
.El
|
||||
.Ss ÖNTANIMLI OLANLAR
|
||||
Öntanımlı Webkit/GTK tuş atamalarının bir kısmının listesi:
|
||||
.Bl -tag -width Ds
|
||||
.It tümü Ctrl-PageUp / Ctrl-PageDown
|
||||
Önceki/sonraki sekmeye git
|
||||
.It arama Ctrl-g / Ctrl-Shift-g
|
||||
Arama kutusuna odaklanıldığında Sonraki/Önceki arama terimine gider.
|
||||
.It arama Escape
|
||||
Geçerli aramayı iptal eder
|
||||
.It textarea Ctrl-;
|
||||
Insert Emoji
|
||||
.El
|
||||
.Sh ORTAM
|
||||
.Bl -tag -width Ds
|
||||
.It Ev BADWOLF_L10N
|
||||
dil_ÜLKE biçiminde iki nokta üst üste ile ayrılan bir liste; burada dil
|
||||
ISO-639'da ve ÜLKE ISO-3166'da yer tanımlandığı gibidir. Örneğin:
|
||||
.Ic BADWOLF_L10N="tr_TR:fr_FR:de_DE" .
|
||||
Bu değişken ayarlanmadığında, yazım
|
||||
etkinleştirilmez. Gelecekte daha genel bir değişken adının kullanılması da
|
||||
amaçlanmaktadır.
|
||||
.Pp
|
||||
Desteklenen sözlüklerin listesini görmek için
|
||||
.Ic enchant-lsmod-2 -list-dicts
|
||||
komutunu, enchant 2.0 öncesi için
|
||||
.Ic enchant-lsmod -list-dicts
|
||||
komutunu çalıştırın
|
||||
.El
|
||||
.Sh DOSYALAR
|
||||
Aşağıdaki yollar, XDG Temel Dizin Tanımlamasını doğru şekilde desteklemek
|
||||
için
|
||||
.Xr sh 1
|
||||
sözdizimini kullanmaktadır, sisteminizde nerede olduğunu
|
||||
görmek için
|
||||
.Xr echo 1
|
||||
komutunu kullanabilirsiniz.
|
||||
.Pp
|
||||
.Bl -tag -width Ds -compact
|
||||
.It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
|
||||
WebKit'e özgü içerik filtresi dosyası, istenmeyen içeriğin (reklamlar,
|
||||
dırdırcı yazılımlar, ...) engellenmesini sağlar. Biçim hakkında bazı
|
||||
tanıtıcı bilgiler için şuraya bakın:
|
||||
.Lk https://webkit.org/blog/3476/content-blockers-first-look/
|
||||
.Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
|
||||
.Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
|
||||
.Pp
|
||||
AblockPlus tarzı filtreler kullanan bir dönüştürücü için şunu deneyin:
|
||||
.Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
|
||||
.Pp
|
||||
Kullanıma hazır (düzenli olarak güncellemeniz gereken) bir dosya için şunu
|
||||
deneyin:
|
||||
.Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
|
||||
.It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
|
||||
Burası derlenen filtrelerin depolandığı yerdir, içindeki dosya(lar) otomatik
|
||||
olarak oluşturulur ve bu nedenle düzenlenmemelidir. Burada yalnızca koruma
|
||||
kısıtlaması/erişim denetimi amacıyla açıklanmaktadır.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
|
||||
XBEL (XML Bookmark Exchange Language) file, known to be currently supported
|
||||
by:
|
||||
.Xr elinks 1 ,
|
||||
.Xr konqueror 1 ,
|
||||
.Xr kbookmarkeditor 1 .
|
||||
.Pp
|
||||
You can do a symbolic link from their path, but you might prefer to use
|
||||
.Lk https://www.w3.org/TR/xinclude/ XInclude
|
||||
which is natively supported by
|
||||
.Nm
|
||||
to automatically merge multiple XBEL
|
||||
files.
|
||||
.Pp
|
||||
Also the bookmark entries aren't re-sorted, so you might want to put your
|
||||
most frequently used ones at the top of the file.
|
||||
.Pp
|
||||
Bu biçim hakkında daha fazla bilgi için:
|
||||
.Lk http://pyxml.sourceforge.net/topics/xbel/
|
||||
.Pp
|
||||
Örnek bir XBEL dosyası için:
|
||||
.Lk https://hacktivis.me/bookmarks.xbel
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
|
||||
Bu dizin şunları içerir
|
||||
.Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
|
||||
şuraya yüklenecek:
|
||||
.Nm . Not: Bunlar Firefox veya Chrome tarafından desteklenen JavaScript tabanlı Web Uzantıları değil, WebKitGTK API'sini kullanan paylaşılan nesnelerdeki yerel kodlardır.
|
||||
.Pp
|
||||
Faydalı uzantı örnekleri şurada bulunabilir:
|
||||
.Lk https://hacktivis.me/git/badwolf-extensions
|
||||
.It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
|
||||
.Nm
|
||||
arayüzünü biçimlendirmek için CSS dosyaları (sırasıyla sistem ve
|
||||
kullanıcı düzeyinde). Bkz:
|
||||
.Lk https://docs.gtk.org/gtk3/css-properties.html
|
||||
kullanılabilir özellikler için.
|
||||
.Pp
|
||||
Görünümlerinizi test etmek için
|
||||
.Nm
|
||||
başlatılırken
|
||||
.Ev GTK_DEBUG=interactive
|
||||
ortam değişkenini kullanmanız ve CSS sekmesine
|
||||
gitmeniz tavsiye edilir.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
|
||||
Directory containing JS userscripts (ending in
|
||||
.Ic .js )
|
||||
ran at the start
|
||||
of page loads, nesting down into iframes, useful to override website
|
||||
behaviors or add missing features to websites.
|
||||
.Pp
|
||||
Please note that for now unlike GreaseMonkey-style userscripts, they are
|
||||
always run, regardless of the hostname / URLs.
|
||||
.El
|
||||
.Sh YAZARLAR
|
||||
.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me
|
||||
.Sh HATALAR
|
||||
Katkılarınızı veya biletlerinizi şuraya gönderebilirsiniz
|
||||
.Lk https://sr.ht/~lanodan/badwolf/
|
||||
yamalar için
|
||||
.Xr git-send-email 1
|
||||
ile.
|
165
badwolf/badwolf.vi.1
Executable file
|
@ -0,0 +1,165 @@
|
|||
.\" BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
.\" Copyright © 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
.\" SPDX-License-Identifier: BSD-3-Clause
|
||||
.Dd 2022-07-13
|
||||
.Dt BADWOLF 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm badwolf
|
||||
.Nd trình duyệt web tối giản và tôn trọng quyền riêng tư sử dụng WebKitGTK
|
||||
.Sh TÓM TẮT
|
||||
.Nm
|
||||
.Op Ar tuỳ chọn webkit/gtk
|
||||
.Op Ar URLs hoặc đường dẫn
|
||||
.Sh MIÊU TẢ
|
||||
.Nm
|
||||
là một trình duyệt web tối giản và tôn trọng quyền riêng tư của người dùng. Nó được xây dựng sử dụng WebKitGTK và vì vậy nhận các tuỳ chọn và biến môi trường của WebKitGTK (và các thư viện phụ thuộc), tuy nhiên có vẻ không có trang manpages cho những tuỳ chọn này.
|
||||
.Pp
|
||||
Tuỳ chỉnh thời điểm chạy dành riêng cho
|
||||
.Nm
|
||||
sẽ có thể được thêm vào trong lần phát hành tới.
|
||||
.Sh PHÍM TẮT
|
||||
Phần sau liệt kê các phím tắt và tác dụng, mỗi mục bắt đầu bằng bộ phận được chọn hoặc.
|
||||
.Aq tất cả
|
||||
nếu nó có tác dụng với toàn bộ cửa sổ, sau đó là phím tắt để kích hoạt.
|
||||
.Bl -tag -width Ds
|
||||
.It trên trang web Ctrl-Lăn chuột
|
||||
Phóng to/thu nhỏ trang web.
|
||||
.It trên trang web Ctrl-0
|
||||
Đặt lại kích thước về 100%.
|
||||
.It trên trang web Ctrl-Chuột chính, trên trang web Chuột giữa
|
||||
Mở đường dẫn trong tab mới. (Ghi chú: JS có thể ghi đè sự kiện này)
|
||||
.It tất cả Ctrl-t
|
||||
Tạo tab mới (trong một phiên làm việc mới, tương tự như khi bấm nút)
|
||||
.It trình duyệt Ctrl-F4, trình duyệt Alt-d
|
||||
Đóng tab hiện tại
|
||||
.It trình duyệt Ctrl-f
|
||||
Kích hoạt chế độ tìm kiếm trong trang
|
||||
.It trình duyệt Ctrl-l
|
||||
Đi tới thanh đường dẫn (URL)
|
||||
.It trình duyệt Ctrl-Shift-r / Ctrl-r, trình duyệt F5
|
||||
Tải lại trang ở tab hiện tại (có/không xoá bộ nhớ cache)
|
||||
.It trình duyệt Esc
|
||||
Dừng tải trangg ở tab hiện tại
|
||||
.It trình duyệt F7
|
||||
Bật chế độ duyệt bằng con trỏ
|
||||
.It trình duyệt F12
|
||||
Mở
|
||||
Opens the web inspector.
|
||||
.It trình duyệt Ctrl-[ / Ctrl-]
|
||||
Mở trang trước/sau trong lịch sử của tab hiện tại
|
||||
.It trình duyệt Ctrl-p
|
||||
Mở hộp thoại để in trang hiện tại
|
||||
.It tất cả Alt-trái / Alt-phải
|
||||
Đi tới tab bên trái/phải
|
||||
.It tất cả F1
|
||||
Hiển thị thông tin về trình duyệt
|
||||
.It tất cả Alt-n
|
||||
Với n là phím số:
|
||||
Đi tới tab thứ n; đi tới tab cuối với n=0.
|
||||
.El
|
||||
.Ss MẶC ĐỊNH
|
||||
Đây là danh sách không đầy đủ một số phím tắt mặc định của Webkit/GTK:
|
||||
.Bl -tag -width Ds
|
||||
.It tất cả Ctrl-PageUp / Ctrl-PageDown
|
||||
Đi tới tab bên trái/phải
|
||||
.It tìm kiếm Ctrl-g / Ctrl-Shift-g
|
||||
Đi tới vị trí kết quả tìm kiếm tiếp theo/trước đó.
|
||||
.It tìm kiếm Escape
|
||||
Thoát chế độ tìm kiếm
|
||||
.It vùng văn bản Ctrl-;
|
||||
Chèn biểu tượng cảm xúc
|
||||
.El
|
||||
.Sh BIẾN MÔI TRƯỜNG
|
||||
.Bl -tag -width Ds
|
||||
.It Ev BADWOLF_L10N
|
||||
Danh sách theo format lang_COUNTRY với lang là mã ngôn ngữ theo ISO-639 và COUNTRY là mã nước theo ISO-3166, ngắt bằng dấu chấm phẩy.
|
||||
Ví dụ,
|
||||
.Ic BADWOLF_L10N="en_GB:fr_FR:de_DE" .
|
||||
Khi biến này không được cài, chức năng sửa lỗi chính tả không hoạt động.
|
||||
Trong tương lại, dự định sẽ có một tên biến chung hơn.
|
||||
.Pp
|
||||
Để liệt kê danh sách từ điển được hỗ trợ, chạy lệnh:
|
||||
.Ic enchant-lsmod-2 -list-dicts
|
||||
hoặc trước enchant 2.0:
|
||||
.Ic enchant-lsmod -list-dicts
|
||||
.El
|
||||
.Sh FILE
|
||||
Các đường dẫn sau sử dụng cú pháp của
|
||||
.Xr sh 1
|
||||
để hỗ trợ Quy chuẩn Thư mục Căn bản XDG đúng cách, bạn có thể dùng lệnh
|
||||
.Xr echo 1
|
||||
để kiểm tra các thư mục này ở đâu trên hệ thống của mình.
|
||||
.Pp
|
||||
.Bl -tag -width Ds -compact
|
||||
.It Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json
|
||||
File chứa các bộ lọc nội dung riêng cho WebKit, cho phép bạn chặn nội dung không mong muốn (quảng cáo, làm phiền, ...)
|
||||
Dưới đây là một số nguồn (bằng tiếng Anh) để biết thêm về định dạng file này:
|
||||
.Lk https://webkit.org/blog/3476/content-blockers-first-look/
|
||||
.Lk https://webkit.org/blog/4062/targeting-domains-with-content-blockers/
|
||||
.Lk https://developer.apple.com/documentation/safariservices/creating_a_content_blocker
|
||||
.Pp
|
||||
Để chuyển từ bộ lọc kiểu AblockPlus-style filters, có thể thử:
|
||||
.Lk https://gitlab.com/eyeo/adblockplus/abp2blocklist
|
||||
.Pp
|
||||
Dưới đây là một số nguồn bộ lọc có sẵn (cần cập nhật thường xuyên):
|
||||
.Lk https://easylist-downloads.adblockplus.org/easylist_min_content_blocker.json
|
||||
.It Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters
|
||||
Đây là nơi các bộ lọc sau khi được phiên dịch, các file trong thư mục này được tự động tạo ra và không nên được chỉnh sửa.
|
||||
Vị trí thư mục này được ghi chép lại để giúp cho mục đích cách ly và quản lý truy cập.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel
|
||||
File chứa dấu trang theo định dạng XBEL (XML Bookmark Exchange Language), được hộ trợ bởi các trình duyệt:
|
||||
.Xr elinks 1 ,
|
||||
.Xr konqueror 1 ,
|
||||
.Xr kbookmarkeditor 1 .
|
||||
.Pp
|
||||
Bạn có thể tạo đường dẫn mềm tới file dấu trang của chúng, nhưng bạn có thể muốn sử dụng
|
||||
.Lk https://www.w3.org/TR/xinclude/ XInclude
|
||||
được hỗ trợ bởi
|
||||
.Nm
|
||||
để tự động kết hợp nhiều file XBEL.
|
||||
.Pp
|
||||
Các dấu trang không được sắp xếp lại nên bạn có thể muốn đặt những trang được truy cập thường xuyên lên đầu.
|
||||
.Pp
|
||||
Để biết thêm thông tin chi tiết về định dạng file, xem trang (bằng tiếng Anh):
|
||||
.Lk http://pyxml.sourceforge.net/topics/xbel/
|
||||
.Pp
|
||||
File XBEL mẫu:
|
||||
.Lk https://hacktivis.me/bookmarks.xbel
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/
|
||||
Thư mục chứa
|
||||
.Lk https://webkitgtk.org/reference/webkit2gtk/stable/WebKitWebExtension.html WebKitWebExtensions
|
||||
để tải cho
|
||||
.Nm . Ghi chú: Đây không phải các tiện ích mở rộng sử dụng JavaScript như được hỗ trợ bởi Firefox hay Chrome, mà là các thư viện chia sẻ sử dụng API của WebKitGTK.
|
||||
.Pp
|
||||
Bạn có thể xem một số tiện ích hữu dụng tại:
|
||||
.Lk https://hacktivis.me/git/badwolf-extensions
|
||||
.It Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css
|
||||
File CSS (ở mức độ hệ thống và người dùng, theo thứ tự trên) để tuỳ chỉnh giao diện của
|
||||
.Nm .
|
||||
Xem trang
|
||||
.Lk https://docs.gtk.org/gtk3/css-properties.html
|
||||
(tiếng Anh) để biết các thuộc tính có thể sử dụng.
|
||||
.Pp
|
||||
Để kiểm tra tuỳ chỉnh CSS, bạn nên bật chế độ debug bằng cách đặt biến môi trường
|
||||
.Ev GTK_DEBUG=interactive
|
||||
khi bật trình duyệt
|
||||
.Nm
|
||||
và đến tab CSS.
|
||||
.It Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/
|
||||
Thư mục chứa script JS của người dùng (kết thúc bằng đuôi
|
||||
.Ic .js )
|
||||
để chạy khi trang cũng như các iframes bắt đầu tải,
|
||||
hữu ích khi muốn ghi đè các hành vi không mong muốn hoặc thêm tính năng cho trang web.
|
||||
.Pp
|
||||
Lưu ý rằng hiện nay, không như script kiểu GreaseMonkey, tất cả đều được chạy, không kể đến URL hay máy chủ được truy cập.
|
||||
.El
|
||||
.Sh TÁC GIẢ
|
||||
.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me
|
||||
.Sh BÁO LỖI
|
||||
Bạn có thể đóng góp hoặc báo lỗi tại
|
||||
.Lk https://sr.ht/~lanodan/badwolf/
|
||||
với lệnh
|
||||
.Xr git-send-email 1
|
||||
đối với code.
|
125
badwolf/bookmarks.c
Executable file
|
@ -0,0 +1,125 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "bookmarks.h"
|
||||
|
||||
#include "badwolf.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <glib/gi18n.h> /* _() and other internationalization/localization helpers */
|
||||
#include <glib/gprintf.h> /* g_fprintf() */
|
||||
#include <gtk/gtk.h>
|
||||
#include <libxml/xinclude.h>
|
||||
#include <libxml/xpath.h>
|
||||
#include <unistd.h> /* access() */
|
||||
|
||||
static gboolean
|
||||
location_completion_matches(GtkEntryCompletion *completion,
|
||||
const gchar *key,
|
||||
GtkTreeIter *iter,
|
||||
gpointer UNUSED(user_data))
|
||||
{
|
||||
gchar *buffer;
|
||||
gchar *pattern;
|
||||
gboolean result;
|
||||
|
||||
pattern = g_strdup_printf("*%s*", key);
|
||||
|
||||
gtk_tree_model_get(gtk_entry_completion_get_model(completion), iter, 0, &buffer, -1);
|
||||
result = g_pattern_match_simple(pattern, buffer);
|
||||
|
||||
g_free(buffer);
|
||||
g_free(pattern);
|
||||
return result;
|
||||
}
|
||||
|
||||
void
|
||||
bookmarks_completion_setup(GtkEntryCompletion *location_completion, GtkTreeModel *tree_model)
|
||||
{
|
||||
gtk_entry_completion_set_model(location_completion, tree_model);
|
||||
gtk_entry_completion_set_text_column(location_completion, 0);
|
||||
gtk_entry_completion_set_match_func(location_completion, location_completion_matches, NULL, NULL);
|
||||
gtk_entry_completion_set_inline_selection(location_completion, BADWOLF_LOCATION_INLINE_SELECTION);
|
||||
}
|
||||
|
||||
static void
|
||||
location_completion_cleanup(xmlXPathObjectPtr xpathObj, xmlXPathContextPtr xpathCtx, xmlDocPtr doc)
|
||||
{
|
||||
if(xpathObj != NULL) xmlXPathFreeObject(xpathObj);
|
||||
if(xpathCtx != NULL) xmlXPathFreeContext(xpathCtx);
|
||||
if(doc != NULL) xmlFreeDoc(doc);
|
||||
}
|
||||
|
||||
static void
|
||||
load_xpath_results(GtkListStore *list_store, xmlNodeSetPtr nodes)
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
int size;
|
||||
|
||||
size = (nodes) ? nodes->nodeNr : 0;
|
||||
|
||||
g_fprintf(stderr, _("Bookmarks: Found %d bookmarks.\n"), size);
|
||||
for(int i = 0; i < size; i++)
|
||||
if(nodes->nodeTab[i])
|
||||
{
|
||||
gtk_list_store_append(list_store, &iter);
|
||||
gtk_list_store_set(
|
||||
list_store, &iter, 0, (char *)xmlXPathCastNodeToString(nodes->nodeTab[i]), -1);
|
||||
}
|
||||
}
|
||||
|
||||
GtkTreeModel *
|
||||
bookmarks_completion_init()
|
||||
{
|
||||
xmlDocPtr doc = NULL;
|
||||
xmlXPathContextPtr xpathCtx = NULL;
|
||||
xmlXPathObjectPtr xpathObj = NULL;
|
||||
|
||||
const xmlChar *xpathExpr = (const xmlChar *)"//bookmark/@href";
|
||||
char *filename = g_build_filename(g_get_user_data_dir(), "badwolf", "bookmarks.xbel", NULL);
|
||||
GtkListStore *list_store = gtk_list_store_new(1, G_TYPE_STRING);
|
||||
|
||||
/* flawfinder: ignore, just a presence check */
|
||||
if(access(filename, R_OK) != 0)
|
||||
{
|
||||
g_fprintf(stderr, _("Bookmarks: No loadable file found at %s\n"), filename);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
g_fprintf(stderr, _("Bookmarks: loading at %s\n"), filename);
|
||||
doc = xmlParseFile(filename);
|
||||
if(doc == NULL)
|
||||
{
|
||||
g_fprintf(stderr, _("Bookmarks: unable to parse file \"%s\"\n"), filename);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
xmlXIncludeProcess(doc);
|
||||
|
||||
xpathCtx = xmlXPathNewContext(doc);
|
||||
if(xpathCtx == NULL)
|
||||
{
|
||||
g_fprintf(stderr, _("Bookmarks: unable to create new XPath context\n"));
|
||||
goto failure;
|
||||
}
|
||||
|
||||
xpathObj = xmlXPathEvalExpression(xpathExpr, xpathCtx);
|
||||
if(xpathObj == NULL)
|
||||
{
|
||||
g_fprintf(stderr, _("Bookmarks: unable to evaluate XPath expression \"%s\"\n"), xpathExpr);
|
||||
goto failure;
|
||||
}
|
||||
|
||||
load_xpath_results(list_store, xpathObj->nodesetval);
|
||||
|
||||
location_completion_cleanup(xpathObj, xpathCtx, doc);
|
||||
|
||||
g_fprintf(stderr, _("Bookmarks: Done.\n"));
|
||||
|
||||
return GTK_TREE_MODEL(list_store);
|
||||
|
||||
failure:
|
||||
location_completion_cleanup(xpathObj, xpathCtx, doc);
|
||||
g_free(filename);
|
||||
return NULL;
|
||||
}
|
6
badwolf/bookmarks.h
Executable file
|
@ -0,0 +1,6 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
GtkTreeModel *bookmarks_completion_init();
|
||||
void bookmarks_completion_setup(GtkEntryCompletion *location_completion, GtkTreeModel *tree_model);
|
BIN
badwolf/bookmarks.o
Executable file
34
badwolf/bookmarks_test.c
Executable file
|
@ -0,0 +1,34 @@
|
|||
// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "bookmarks.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <stdlib.h> /* setenv */
|
||||
|
||||
static void
|
||||
bookmarks_completion_init_test(void)
|
||||
{
|
||||
GtkTreeModel *result;
|
||||
|
||||
char *filename = g_build_filename(g_get_current_dir(), "bookmarks_test.fixtures/full/", NULL);
|
||||
g_assert_true(setenv("XDG_DATA_HOME", filename, 1) == 0);
|
||||
|
||||
result = bookmarks_completion_init();
|
||||
|
||||
g_assert_true(result != NULL);
|
||||
g_free(filename);
|
||||
g_assert_true(unsetenv("XDG_DATA_HOME") == 0);
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func("/bookmarks_completion_init/test", bookmarks_completion_init_test);
|
||||
|
||||
return g_test_run();
|
||||
}
|
20
badwolf/bookmarks_test.fixtures/full/badwolf/bookmarks.xbel
Executable file
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<?xml-stylesheet type="text/xsl" href="bookmarks.xsl"?>
|
||||
<!DOCTYPE xbel PUBLIC "+//IDN python.org//DTD XML Bookmark Exchange Language 1.0//EN//XML"
|
||||
"http://www.python.org/topics/xml/dtds/xbel-1.0.dtd">
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
-->
|
||||
|
||||
<xbel>
|
||||
<folder>
|
||||
<title>Operating Systems</title>
|
||||
<bookmark href="http://9front.org/">
|
||||
<title>9Front</title>
|
||||
<desc>Fork of Plan 9, a Unix successor by Bell Labs</desc>
|
||||
</bookmark>
|
||||
</folder>
|
||||
<bookmark href="https://litepub.social/"><title>LitePub</title><desc>Profile of ActivityPub used by Pleroma et al.</desc></bookmark>
|
||||
<!-- comment -->
|
||||
</xbel>
|
62
badwolf/build.ninja
Executable file
|
@ -0,0 +1,62 @@
|
|||
# SPDX-FileCopyrightText: 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# Written by hand, config.ninja is the generated one
|
||||
|
||||
rule po2mo
|
||||
command = mkdir -p "$$(dirname $out)" && msgfmt -o $out $in
|
||||
|
||||
rule translate_manpage
|
||||
command = po4a-translate --format man -M utf-8 --master badwolf.1 --po $in --localized $out
|
||||
|
||||
rule scour
|
||||
command = mkdir -p "$$(dirname $out)" && scour --no-line-breaks --enable-id-stripping --remove-metadata $in $out
|
||||
|
||||
rule gen_icon
|
||||
command = mkdir -p "$$(dirname $out)" && inkscape -w $width -h $height $in -o $out
|
||||
|
||||
rule run_tests
|
||||
command = for test in $in; do ./$$test || exit 1; done
|
||||
|
||||
rule install
|
||||
command = sh -e ./install.sh
|
||||
|
||||
include config.ninja
|
||||
|
||||
build po/manpage.pot: xgettext_man badwolf.1 | po/pot_license.ed
|
||||
build icons/hicolor/scalable/apps/badwolf.svg: scour badwolf.svg
|
||||
|
||||
build uri_test: cc_exe uri_test.c uri.o
|
||||
build fmt_test: cc_exe fmt_test.c fmt.o
|
||||
build bookmarks_test: cc_exe bookmarks_test.c bookmarks.o
|
||||
build test: run_tests uri_test fmt_test bookmarks_test
|
||||
|
||||
rule list_authors
|
||||
command = git log --use-mailmap --format='format:%aN <%aE>' --date='format:%Y' | sort | uniq >$out
|
||||
build AUTHORS: list_authors | .git
|
||||
|
||||
rule format
|
||||
command = clang-format -style=file -assume-filename=.clang-format -i *.c *.h
|
||||
build format: format
|
||||
|
||||
rule mandoc
|
||||
command = $MANDOC -Tlint -Wunsupp,error,warning ./badwolf.1 && $MANDOC -Tlint -Wunsupp,error ./badwolf.*.1
|
||||
build lint_mandoc: mandoc
|
||||
|
||||
rule shellcheck
|
||||
command = $SHELLCHECK ./configure
|
||||
build lint_shellcheck: shellcheck | ./configure
|
||||
|
||||
rule flawfinder
|
||||
command = $FLAWFINDER .
|
||||
build lint_flawfinder: flawfinder
|
||||
|
||||
rule reuse
|
||||
command = $REUSE lint
|
||||
build lint_reuse: reuse
|
||||
|
||||
rule true
|
||||
command = true
|
||||
|
||||
build lint: true | lint_mandoc lint_shellcheck lint_flawfinder lint_reuse
|
||||
build all: phony badwolf
|
112
badwolf/config.h
Executable file
|
@ -0,0 +1,112 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#ifndef CONFIG_H_INCLUDED
|
||||
#define CONFIG_H_INCLUDED
|
||||
/* BADWOLF_TAB_POSITION: Position of the tab listing, can be one of:
|
||||
* - GTK_POS_TOP
|
||||
* - GTK_POS_BOTTOM
|
||||
* - GTK_POS_RIGHT
|
||||
* - GTK_POS_LEFT
|
||||
*
|
||||
* See https://docs.gtk.org/gtk3/enum.PositionType.html
|
||||
*/
|
||||
#define BADWOLF_TAB_POSITION GTK_POS_TOP
|
||||
|
||||
/* BADWOLF_TAB_LABEL_CHARWIDTH: Amount of characters the tab label text fits
|
||||
* Quite conflicts with BADWOLF_TAB_BOX_WIDTH, recommended to only define one
|
||||
*/
|
||||
#define BADWOLF_TAB_LABEL_CHARWIDTH 26
|
||||
|
||||
/* BADWOLF_TAB_BOX_WIDTH: Requested width (in pixels) for the whole tab
|
||||
* Quite conflicts with BADWOLF_TAB_LABEL_CHARWIDTH, recommended to only define one
|
||||
*/
|
||||
//#define BADWOLF_TAB_BOX_WIDTH 120
|
||||
|
||||
// BADWOLF_TAB_HEXPAND: Should the tab try to fill the available horizontal space?
|
||||
#define BADWOLF_TAB_HEXPAND FALSE
|
||||
|
||||
/* BADWOLF_TAB_LABEL_ELLIPSIZE: pango ellipsize mode of the tab label text, can be one of:
|
||||
* - PANGO_ELLIPSIZE_NONE
|
||||
* - PANGO_ELLIPSIZE_START
|
||||
* - PANGO_ELLIPSIZE_MIDDLE
|
||||
* - PANGO_ELLIPSIZE_END
|
||||
*
|
||||
* See https://docs.gtk.org/Pango/enum.EllipsizeMode.html
|
||||
*/
|
||||
#define BADWOLF_TAB_LABEL_ELLIPSIZE PANGO_ELLIPSIZE_MIDDLE
|
||||
|
||||
// BADWOLF_BOX_PADDING: Amount of padding between browser’s box (tab child) elements
|
||||
#define BADWOLF_BOX_PADDING 0
|
||||
|
||||
// BADWOLF_TOOLBAR_PADDING: Amount of padding between toolbar elements
|
||||
#define BADWOLF_TOOLBAR_PADDING 0
|
||||
|
||||
// BADWOLF_TOOLBAR_PADDING: Amount of padding between toolbar elements
|
||||
#define BADWOLF_TOOLBAR_SEPARATOR_PADDING 4
|
||||
|
||||
// BADWOLF_STATUSBAR_PADDING: Amount of padding between statusbar elements
|
||||
#define BADWOLF_STATUSBAR_PADDING 0
|
||||
|
||||
// BADWOLF_DOWNLOAD_PADDING: Amount of padding between download list row-elements
|
||||
#define BADWOLF_DOWNLOAD_PADDING 5
|
||||
|
||||
/* BADWOLF_DEFAULT_WIDTH / BADWOLF_DEFAULT_HEIGHT:
|
||||
* Used to define the default width/height of the window,
|
||||
* useful for floating Window Managers, probably useless in tiling ones
|
||||
*
|
||||
* See https://docs.gtk.org/gtk3/method.Window.set_default_size.html
|
||||
*/
|
||||
#define BADWOLF_DEFAULT_WIDTH 800
|
||||
#define BADWOLF_DEFAULT_HEIGHT 600
|
||||
|
||||
/* BADWOLF_WEBKIT_SETTINGS:
|
||||
* Used when creating a new view with webkit_settings_new_with_settings the usage is:
|
||||
* setting-name, setting-value, setting-name, …, NULL
|
||||
*
|
||||
* See: https://webkitgtk.org/reference/webkit2gtk/stable/class.Settings.html#properties
|
||||
*/
|
||||
// clang-format off
|
||||
#define BADWOLF_WEBKIT_SETTINGS \
|
||||
"default-charset", "utf-8", \
|
||||
"enable-caret-browsing", TRUE, \
|
||||
"enable-developer-extras", TRUE, \
|
||||
"enable-dns-prefetching", FALSE, \
|
||||
"enable-hyperlink-auditing", FALSE, \
|
||||
"enable-java", FALSE, \
|
||||
"enable-javascript-markup", TRUE, \
|
||||
"enable-javascript", TRUE, \
|
||||
"enable-plugins", FALSE, \
|
||||
"javascript-can-access-clipboard", FALSE, \
|
||||
"javascript-can-open-windows-automatically", FALSE, \
|
||||
"media-playback-requires-user-gesture", TRUE, \
|
||||
"minimum-font-size", 12, \
|
||||
"allow-top-navigation-to-data-urls", FALSE, \
|
||||
NULL
|
||||
// clang-format on
|
||||
|
||||
/* BADWOLF_STATUSLABEL_ELLIPSIZE: pango ellipsize mode of the status bar label text, can be one of:
|
||||
* - PANGO_ELLIPSIZE_NONE
|
||||
* - PANGO_ELLIPSIZE_START
|
||||
* - PANGO_ELLIPSIZE_MIDDLE
|
||||
* - PANGO_ELLIPSIZE_END
|
||||
*
|
||||
* See https://docs.gtk.org/Pango/enum.EllipsizeMode.html
|
||||
*/
|
||||
#define BADWOLF_STATUSLABEL_ELLIPSIZE PANGO_ELLIPSIZE_MIDDLE
|
||||
|
||||
/* BADWOLF_DOWNLOAD_FILE_PATH_ELLIPSIZE: pango ellipsize mode of the download destination path,
|
||||
* can be one of:
|
||||
* - PANGO_ELLIPSIZE_NONE
|
||||
* - PANGO_ELLIPSIZE_START
|
||||
* - PANGO_ELLIPSIZE_MIDDLE
|
||||
* - PANGO_ELLIPSIZE_END
|
||||
*
|
||||
* See https://docs.gtk.org/Pango/enum.EllipsizeMode.html
|
||||
*/
|
||||
#define BADWOLF_DOWNLOAD_FILE_PATH_ELLIPSIZE PANGO_ELLIPSIZE_MIDDLE
|
||||
|
||||
// BADWOLF_LOCATION_INLINE_SELECTION: show selected completion as a selection in location entry
|
||||
#define BADWOLF_LOCATION_INLINE_SELECTION TRUE
|
||||
|
||||
#endif /* CONFIG_H_INCLUDED */
|
108
badwolf/config.ninja
Executable file
|
@ -0,0 +1,108 @@
|
|||
# Autogenerated by ./configure
|
||||
rule gen_config
|
||||
command = ./configure ""
|
||||
generator = 1
|
||||
|
||||
build config.ninja: gen_config configure
|
||||
|
||||
PREFIX = /usr/local
|
||||
PKGCONFIG = pkg-config
|
||||
MSGFMT = msgfmt
|
||||
INKSCAPE = inkscape
|
||||
CC = cc
|
||||
CFLAGS = -g -O2 -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wconversion -Wsign-conversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=vla
|
||||
LDFLAGS =
|
||||
ED = ed
|
||||
MANDOC = mandoc
|
||||
XGETTEXT = xgettext
|
||||
MSGMERGE = msgmerge
|
||||
SHELLCHECK = true
|
||||
FLAWFINDER = true
|
||||
REUSE = true
|
||||
|
||||
DEPS_cflags = -pthread -I/usr/include/libxml2 -I/usr/include/webkitgtk-4.1 -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/libsoup-3.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/webkitgtk-4.1 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include
|
||||
DEPS_libs = -lxml2 -lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lsoup-3.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread -lgio-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0
|
||||
|
||||
GETTEXT_OPTS = --copyright-holder="Badwolf Authors <https://hacktivis.me/projects/badwolf>" --package-name="Badwolf" --package-version="1.3.0" --msgid-bugs-address="contact+badwolf-msgid@hacktivis.me"
|
||||
|
||||
rule xgettext
|
||||
command = $XGETTEXT --keyword=_ --language=C --from-code=UTF-8 -o $out --add-comments --sort-output --foreign-user --no-location --no-wrap $GETTEXT_OPTS $in && ed -s $out <po/pot_license.ed
|
||||
|
||||
rule msgmerge
|
||||
# touch: msgmerge doesn't always updates timestamps
|
||||
command = $MSGMERGE --update --backup=off $out $in && touch $out
|
||||
|
||||
rule xgettext_man
|
||||
command = if test -e $out; $
|
||||
then po4a-updatepo --format man -M utf-8 --master $in $GETTEXT_OPTS --po $out && ed -s $out <po/pot_license.ed;$
|
||||
else po4a-gettextize --format man -M utf-8 --master $in $GETTEXT_OPTS --po $out && ed -s $out <po/pot_license.ed;$
|
||||
fi
|
||||
|
||||
rule cc_exe
|
||||
command = $CC -std=c11 $CFLAGS -include configure.h $DEPS_cflags -o $out $in $LDFLAGS $DEPS_libs
|
||||
|
||||
rule cc_obj
|
||||
command = $CC -std=c11 $CFLAGS -include configure.h $DEPS_cflags -c -o $out $in
|
||||
|
||||
build po/messages.pot: xgettext bookmarks.c userscripts.c fmt.c fmt_test.c uri.c uri_test.c keybindings.c downloads.c badwolf.c | po/pot_license.ed
|
||||
build badwolf: cc_exe bookmarks.o userscripts.o fmt.o uri.o keybindings.o downloads.o badwolf.o
|
||||
|
||||
build bookmarks.o: cc_obj bookmarks.c | bookmarks.h badwolf.h config.h
|
||||
build userscripts.o: cc_obj userscripts.c | userscripts.h badwolf.h config.h
|
||||
build fmt.o: cc_obj fmt.c | fmt.h
|
||||
build uri.o: cc_obj uri.c | uri.h
|
||||
build keybindings.o: cc_obj keybindings.c | keybindings.h badwolf.h
|
||||
build downloads.o: cc_obj downloads.c | downloads.h badwolf.h config.h
|
||||
build badwolf.o: cc_obj badwolf.c | badwolf.h bookmarks.h config.h downloads.h fmt.h keybindings.h uri.h userscripts.h
|
||||
build po/fr.po: msgmerge po/messages.pot
|
||||
build locale/fr/LC_MESSAGES/Badwolf.mo: po2mo po/fr.po
|
||||
build po/pt_BR.po: msgmerge po/messages.pot
|
||||
build locale/pt_BR/LC_MESSAGES/Badwolf.mo: po2mo po/pt_BR.po
|
||||
build po/tr.po: msgmerge po/messages.pot
|
||||
build locale/tr/LC_MESSAGES/Badwolf.mo: po2mo po/tr.po
|
||||
build po/de.po: msgmerge po/messages.pot
|
||||
build locale/de/LC_MESSAGES/Badwolf.mo: po2mo po/de.po
|
||||
build po/vi.po: msgmerge po/messages.pot
|
||||
build locale/vi/LC_MESSAGES/Badwolf.mo: po2mo po/vi.po
|
||||
build po/de_man.po: xgettext_man badwolf.1
|
||||
build badwolf.de.1: translate_manpage po/de_man.po
|
||||
build po/fr_man.po: xgettext_man badwolf.1
|
||||
build badwolf.fr.1: translate_manpage po/fr_man.po
|
||||
build po/tr_man.po: xgettext_man badwolf.1
|
||||
build badwolf.tr.1: translate_manpage po/tr_man.po
|
||||
build po/vi_man.po: xgettext_man badwolf.1
|
||||
build badwolf.vi.1: translate_manpage po/vi_man.po
|
||||
build icons/hicolor/24x24/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = 24
|
||||
height = 24
|
||||
build icons/hicolor/32x32/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = 32
|
||||
height = 32
|
||||
build icons/hicolor/48x48/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = 48
|
||||
height = 48
|
||||
build icons/hicolor/64x64/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = 64
|
||||
height = 64
|
||||
build icons/hicolor/128x128/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = 128
|
||||
height = 128
|
||||
build icons/hicolor/256x256/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = 256
|
||||
height = 256
|
||||
build icons: phony | icons/hicolor/24x24/apps/badwolf.png icons/hicolor/32x32/apps/badwolf.png icons/hicolor/48x48/apps/badwolf.png icons/hicolor/64x64/apps/badwolf.png icons/hicolor/128x128/apps/badwolf.png icons/hicolor/256x256/apps/badwolf.png
|
||||
build trans_man: phony | badwolf.de.1 badwolf.fr.1 badwolf.tr.1 badwolf.vi.1
|
||||
build bundled: phony | icons trans_man
|
||||
|
||||
default badwolf locale/fr/LC_MESSAGES/Badwolf.mo locale/pt_BR/LC_MESSAGES/Badwolf.mo locale/tr/LC_MESSAGES/Badwolf.mo locale/de/LC_MESSAGES/Badwolf.mo locale/vi/LC_MESSAGES/Badwolf.mo
|
||||
|
||||
rule remove
|
||||
command = rm -fr ${in} ${foo}
|
||||
|
||||
build install: install | badwolf locale/fr/LC_MESSAGES/Badwolf.mo locale/pt_BR/LC_MESSAGES/Badwolf.mo locale/tr/LC_MESSAGES/Badwolf.mo locale/de/LC_MESSAGES/Badwolf.mo locale/vi/LC_MESSAGES/Badwolf.mo
|
||||
build clean: remove
|
||||
foo = badwolf locale/fr/LC_MESSAGES/Badwolf.mo locale/pt_BR/LC_MESSAGES/Badwolf.mo locale/tr/LC_MESSAGES/Badwolf.mo locale/de/LC_MESSAGES/Badwolf.mo locale/vi/LC_MESSAGES/Badwolf.mo bookmarks.o userscripts.o fmt.o uri.o keybindings.o downloads.o badwolf.o fmt_test.o uri_test.o bookmarks_test.o
|
||||
build distclean: remove | clean
|
||||
foo = config.ninja configure.h install.sh
|
||||
build fullclean: remove | distclean
|
||||
foo = badwolf.de.1 badwolf.fr.1 badwolf.tr.1 badwolf.vi.1 icons/hicolor/24x24 icons/hicolor/32x32 icons/hicolor/48x48 icons/hicolor/64x64 icons/hicolor/128x128 icons/hicolor/256x256
|
455
badwolf/configure
vendored
Executable file
|
@ -0,0 +1,455 @@
|
|||
#!/bin/sh
|
||||
# SPDX-FileCopyrightText: 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
VERSION=1.3.0
|
||||
VERSION_FULL=${VERSION}$(./version.sh)
|
||||
DEPS="gtk+-3.0 libxml-2.0"
|
||||
|
||||
SRCS="bookmarks.c userscripts.c fmt.c fmt_test.c uri.c uri_test.c keybindings.c downloads.c badwolf.c"
|
||||
OBJS="bookmarks.o userscripts.o fmt.o uri.o keybindings.o downloads.o badwolf.o"
|
||||
OBJS_test="fmt_test.o uri_test.o bookmarks_test.o"
|
||||
EXE=badwolf
|
||||
EXE_test="fmt_test uri_test bookmarks_test"
|
||||
DOCS="usr.bin.badwolf README.md KnowledgeBase.md interface.md"
|
||||
|
||||
TRANS="fr pt_BR tr de vi"
|
||||
TRANS_MAN="de fr tr vi"
|
||||
|
||||
lint_targets=""
|
||||
|
||||
min_webkitgtk=2.32.0
|
||||
min_glib_guri=2.66.0
|
||||
|
||||
arg0="$0"
|
||||
args="$@"
|
||||
|
||||
usage() {
|
||||
cat <<END
|
||||
Usage: [variables] configure [variables]
|
||||
|
||||
Variables:
|
||||
PREFIX=DIR
|
||||
BINDIR=DIR
|
||||
MANDIR=DIR
|
||||
DOCDIR=DIR
|
||||
DATADIR=DIR
|
||||
APPSDIR=DIR
|
||||
|
||||
PKGCONFIG=BIN
|
||||
MSGFMT=BIN
|
||||
INKSCAPE=BIN
|
||||
CC=BIN
|
||||
CFLAGS=OPTIONS
|
||||
ED=BIN
|
||||
LDFLAGS=OPTIONS
|
||||
EXTRA_CFLAGS=OPTIONS
|
||||
XGETTEXT=BIN
|
||||
MSGMERGE=BIN
|
||||
MANDOC=BIN
|
||||
SHELLCHECK=BIN
|
||||
FLAWFINDER=BIN
|
||||
REUSE=BIN
|
||||
|
||||
WITH_WEBKITGTK=(4.0|4.1)
|
||||
WITH_URI_PARSER=(guri|libsoup2)
|
||||
|
||||
Variables are set in the following order: Default, Environment, Arguments
|
||||
|
||||
Dependencies: See README.md
|
||||
END
|
||||
}
|
||||
|
||||
is_ok() {
|
||||
status="$?"
|
||||
|
||||
if test $status -eq 0; then
|
||||
printf " OK\n"
|
||||
else
|
||||
printf " FAIL\n"
|
||||
fi
|
||||
|
||||
return $status
|
||||
}
|
||||
|
||||
required() {
|
||||
is_ok || exit 1
|
||||
}
|
||||
|
||||
pkg_config_check() {
|
||||
printf 'Checking: %s %s ...' "${PKGCONFIG}" "$*"
|
||||
"${PKGCONFIG}" "$@"
|
||||
is_ok
|
||||
}
|
||||
|
||||
## User configuration
|
||||
|
||||
# defaults
|
||||
PREFIX="${PREFIX:-/usr/local}"
|
||||
PKGCONFIG="${PKGCONFIG:-pkg-config}"
|
||||
MSGFMT="${MSGFMT:-msgfmt}"
|
||||
INKSCAPE="${INKSCAPE:-inkscape}"
|
||||
CC="${CC:-cc}"
|
||||
CFLAGS="${CFLAGS:--g -O2 -D_FORTIFY_SOURCE=2}"
|
||||
ED="${ED:-ed}"
|
||||
XGETTEXT="${XGETTEXT:-xgettext}"
|
||||
MSGMERGE="${MSGMERGE:-msgmerge}"
|
||||
MANDOC="${MANDOC:-mandoc}"
|
||||
SHELLCHECK="${SHELLCHECK:-shellcheck}"
|
||||
FLAWFINDER="${FLAWFINDER:-flawfinder}"
|
||||
REUSE="${REUSE:-reuse}"
|
||||
|
||||
|
||||
# Also allow variables through arguments
|
||||
for i; do
|
||||
case "$i" in
|
||||
-h|--help)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
-*)
|
||||
printf "Unknown argument ‘%s’\n" "${i}"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
*=*)
|
||||
# shellcheck disable=SC2163
|
||||
export "$i"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
printf "Unknown argument ‘%s’\n" "${i}"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Fallback definitions for dirs, based on $PREFIX
|
||||
BINDIR="${BINDIR:-${PREFIX}/bin}"
|
||||
MANDIR="${MANDIR:-${PREFIX}/share/man}"
|
||||
DOCDIR="${DOCDIR:-${PREFIX}/share/doc/badwolf-${VERSION}}"
|
||||
DATADIR="${DATADIR:-${PREFIX}/share/badwolf}"
|
||||
APPSDIR="${APPSDIR:-${PREFIX}/share/applications}"
|
||||
|
||||
# Add some extra CFLAGS
|
||||
CFLAGS="${CFLAGS} -Wall -Wextra -Wconversion -Wsign-conversion -Werror=implicit-function-declaration -Werror=implicit-int -Werror=vla ${EXTRA_CFLAGS}"
|
||||
|
||||
## System checks
|
||||
# commands
|
||||
printf 'Checking %s command existance ...' "${PKGCONFIG}"
|
||||
command -v "${PKGCONFIG}" >/dev/null ; required
|
||||
|
||||
printf 'Checking %s command existance ...' "${CC}"
|
||||
command -v "${CC}" >/dev/null ; required
|
||||
|
||||
printf 'Checking %s command existance ...' "${ED}"
|
||||
if command -v "${ED}" >/dev/null ; is_ok
|
||||
then
|
||||
:
|
||||
else
|
||||
echo 'Warning: Fixing copyright in po/*.pot files via ed(1) disabled'
|
||||
ED="false"
|
||||
fi
|
||||
|
||||
printf 'Checking %s command existance ...' "${MANDOC}"
|
||||
if command -v "${MANDOC}" >/dev/null ; is_ok
|
||||
then
|
||||
lint_targets="${lint_targets} lint_mandoc"
|
||||
else
|
||||
echo 'Warning: manpage linting via mandoc(1) disabled'
|
||||
MANDOC="true"
|
||||
fi
|
||||
|
||||
printf 'Checking %s command existance ...' "${XGETTEXT}"
|
||||
if command -v "${XGETTEXT}" >/dev/null ; is_ok
|
||||
then
|
||||
if [ "${XGETTEXT}" != "true" ]
|
||||
then
|
||||
# This is due to NetBSD base system having a very old version of gettext (0.16)
|
||||
printf 'Checking if %s --help lists --package-name= option ...' "${XGETTEXT}"
|
||||
if "${XGETTEXT}" --help 2>&1 | grep -q package-name=; is_ok
|
||||
then
|
||||
:
|
||||
else
|
||||
echo 'Warning: translation updates disabled, you may want to set XGETTEXT'
|
||||
XGETTEXT="true"
|
||||
fi
|
||||
else
|
||||
echo 'Warning: translation updates disabled'
|
||||
fi
|
||||
else
|
||||
echo 'Warning: translation updates disabled'
|
||||
XGETTEXT="true"
|
||||
fi
|
||||
|
||||
printf 'Checking %s command existance ...' "${MSGMERGE}"
|
||||
if command -v "${MSGMERGE}" >/dev/null ; is_ok
|
||||
then
|
||||
:
|
||||
else
|
||||
echo 'Warning: translation updates disabled'
|
||||
MSGMERGE="true"
|
||||
fi
|
||||
|
||||
printf 'Checking %s command existance ...' "${SHELLCHECK}"
|
||||
if command -v "${SHELLCHECK}" >/dev/null ; is_ok
|
||||
then
|
||||
lint_targets="${lint_targets} lint_shellcheck"
|
||||
else
|
||||
echo 'Warning: shell linting via shellcheck(1) disabled'
|
||||
SHELLCHECK="true"
|
||||
fi
|
||||
|
||||
printf 'Checking %s command existance ...' "${FLAWFINDER}"
|
||||
if command -v "${FLAWFINDER}" >/dev/null ; is_ok
|
||||
then
|
||||
lint_targets="${lint_targets} lint_flawfinder"
|
||||
else
|
||||
echo 'Warning: C analysis via flawfinder(1) disabled'
|
||||
FLAWFINDER="true"
|
||||
fi
|
||||
|
||||
printf 'Checking %s command existance ...' "${REUSE}"
|
||||
if command -v "${REUSE}" >/dev/null ; is_ok
|
||||
then
|
||||
lint_targets="${lint_targets} lint_reuse"
|
||||
else
|
||||
echo 'Warning: License linting via reuse(1) disabled'
|
||||
REUSE="true"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
# pkg-config
|
||||
for dep in ${DEPS}
|
||||
do
|
||||
pkg_config_check --exists "$dep" || exit 1
|
||||
done
|
||||
|
||||
case "${WITH_WEBKITGTK}n" in
|
||||
4.1n)
|
||||
pkg_config_check --atleast-version="${min_webkitgtk}" webkit2gtk-4.1 || exit 1
|
||||
DEPS="${DEPS} webkit2gtk-4.1"
|
||||
;;
|
||||
4.0n)
|
||||
pkg_config_check --atleast-version="${min_webkitgtk}" webkit2gtk-4.0 || exit 1
|
||||
DEPS="${DEPS} webkit2gtk-4.0"
|
||||
;;
|
||||
n)
|
||||
echo "notice: Packagers should consider setting the ABI version (4.0 or 4.1) in WITH_WEBKITGTK" >&2
|
||||
if pkg_config_check --atleast-version="${min_webkitgtk}" webkit2gtk-4.1
|
||||
then
|
||||
DEPS="${DEPS} webkit2gtk-4.1"
|
||||
else
|
||||
pkg_config_check --atleast-version="${min_webkitgtk}" webkit2gtk-4.0 || exit 1
|
||||
DEPS="${DEPS} webkit2gtk-4.0"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "error: invalid webkit2gtk version in WITH_WEBKITGTK environment variable, must be 4.0 or 4.1" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
case "${WITH_URI_PARSER}n" in
|
||||
gurin)
|
||||
echo "URI parser selected: GUri from glib-2.0"
|
||||
pkg_config_check --atleast-version="${min_glib_guri}" glib-2.0 || exit 1
|
||||
DEPS="${DEPS} glib-2.0"
|
||||
;;
|
||||
libsoup2n)
|
||||
echo "URI parser selected: libsoup-2.4"
|
||||
pkg_config_check libsoup-2.4 || exit 1
|
||||
DEPS="${DEPS} libsoup-2.4"
|
||||
CFLAGS="${CFLAGS} -DUSE_LIBSOUP2"
|
||||
|
||||
if echo "${DEPS}" | grep -q 'webkit2gtk-4.1'
|
||||
then
|
||||
echo 'warning: libsoup2 selected while WebKitGTK with libsoup3 API is used' >&2
|
||||
fi
|
||||
;;
|
||||
n)
|
||||
echo "notice: Packagers should consider setting the URI parsing library (guri or libsoup2) in WITH_URI_PARSER" >&2
|
||||
|
||||
if echo "${DEPS}" | grep -q 'webkit2gtk-4.0'
|
||||
then
|
||||
pkg_config_check libsoup-2.4 || exit 1
|
||||
echo "URI parser selected: libsoup-2.4"
|
||||
DEPS="${DEPS} libsoup-2.4"
|
||||
CFLAGS="${CFLAGS} -DUSE_LIBSOUP2"
|
||||
else
|
||||
pkg_config_check --atleast-version="${min_glib_guri}" glib-2.0 || exit 1
|
||||
echo "URI parser selected: GUri from glib-2.0"
|
||||
DEPS="${DEPS} glib-2.0"
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "error: invalid uri provider in WITH_URI_PARSER environment variable, must be guri or libsoup2" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
printf 'Using pkg-config to get CFLAGS for %s ...' "${DEPS}"
|
||||
get_cflags() { "${PKGCONFIG}" --cflags "${DEPS}"; }
|
||||
DEPS_cflags="$(get_cflags)"
|
||||
required
|
||||
|
||||
printf 'Using pkg-config to get LIBS for %s ...' "${DEPS}"
|
||||
get_libs() { "${PKGCONFIG}" --libs "${DEPS}"; }
|
||||
DEPS_libs="$(get_libs)"
|
||||
required
|
||||
|
||||
echo
|
||||
|
||||
printf 'Writing to configure.h ...'
|
||||
cat >configure.h <<EOF
|
||||
#define DATADIR "${DATADIR}"
|
||||
#define PACKAGE "Badwolf"
|
||||
#define _XOPEN_SOURCE 700
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#define VERSION "${VERSION_FULL}"
|
||||
EOF
|
||||
is_ok
|
||||
|
||||
## Configuration write
|
||||
printf 'Writing to config.ninja ...'
|
||||
cat >config.ninja <<EOF
|
||||
# Autogenerated by $arg0 $args
|
||||
rule gen_config
|
||||
command = $arg0 "$args"
|
||||
generator = 1
|
||||
|
||||
build config.ninja: gen_config configure
|
||||
|
||||
PREFIX = ${PREFIX}
|
||||
PKGCONFIG = ${PKGCONFIG}
|
||||
MSGFMT = ${MSGFMT}
|
||||
INKSCAPE = ${INKSCAPE}
|
||||
CC = ${CC}
|
||||
CFLAGS = ${CFLAGS}
|
||||
LDFLAGS = ${LDFLAGS}
|
||||
ED = ${ED}
|
||||
MANDOC = ${MANDOC}
|
||||
XGETTEXT = ${XGETTEXT}
|
||||
MSGMERGE = ${MSGMERGE}
|
||||
SHELLCHECK = ${SHELLCHECK}
|
||||
FLAWFINDER = ${FLAWFINDER}
|
||||
REUSE = ${REUSE}
|
||||
|
||||
DEPS_cflags = ${DEPS_cflags}
|
||||
DEPS_libs = ${DEPS_libs}
|
||||
|
||||
GETTEXT_OPTS = --copyright-holder="Badwolf Authors <https://hacktivis.me/projects/badwolf>" --package-name="Badwolf" --package-version="${VERSION_FULL}" --msgid-bugs-address="contact+badwolf-msgid@hacktivis.me"
|
||||
|
||||
rule xgettext
|
||||
command = \$XGETTEXT --keyword=_ --language=C --from-code=UTF-8 -o \$out --add-comments --sort-output --foreign-user --no-location --no-wrap \$GETTEXT_OPTS \$in && ed -s \$out <po/pot_license.ed
|
||||
|
||||
rule msgmerge
|
||||
# touch: msgmerge doesn't always updates timestamps
|
||||
command = \$MSGMERGE --update --backup=off \$out \$in && touch \$out
|
||||
|
||||
rule xgettext_man
|
||||
command = if test -e \$out; $
|
||||
then po4a-updatepo --format man -M utf-8 --master \$in \$GETTEXT_OPTS --po \$out && ed -s \$out <po/pot_license.ed;$
|
||||
else po4a-gettextize --format man -M utf-8 --master \$in \$GETTEXT_OPTS --po \$out && ed -s \$out <po/pot_license.ed;$
|
||||
fi
|
||||
|
||||
rule cc_exe
|
||||
command = \$CC -std=c11 \$CFLAGS -include configure.h \$DEPS_cflags -o \$out \$in \$LDFLAGS \$DEPS_libs
|
||||
|
||||
rule cc_obj
|
||||
command = \$CC -std=c11 \$CFLAGS -include configure.h \$DEPS_cflags -c -o \$out \$in
|
||||
|
||||
build po/messages.pot: xgettext ${SRCS} | po/pot_license.ed
|
||||
build badwolf: cc_exe ${OBJS}
|
||||
|
||||
EOF
|
||||
all="badwolf"
|
||||
|
||||
for obj in ${OBJS}; do
|
||||
obj_c="$(echo "$obj" | sed -e 's;\.o;.c;g')"
|
||||
echo -n "build ${obj}: cc_obj ${obj_c} | "
|
||||
grep '#include "' "${obj_c}" | sed -e 's;#include ";;' -e 's;";;' | tr '\n' ' '
|
||||
echo
|
||||
done >>config.ninja
|
||||
|
||||
for trans in ${TRANS}; do
|
||||
echo "build po/${trans}.po: msgmerge po/messages.pot"
|
||||
echo "build locale/${trans}/LC_MESSAGES/Badwolf.mo: po2mo po/${trans}.po"
|
||||
all="${all} locale/${trans}/LC_MESSAGES/Badwolf.mo"
|
||||
done >>config.ninja
|
||||
|
||||
for man in ${TRANS_MAN}; do
|
||||
echo "build po/${man}_man.po: xgettext_man badwolf.1"
|
||||
echo "build badwolf.${man}.1: translate_manpage po/${man}_man.po"
|
||||
bundled="${bundled} badwolf.${man}.1"
|
||||
trans_man="${trans_man} badwolf.${man}.1"
|
||||
done >>config.ninja
|
||||
|
||||
for i in 24 32 48 64 128 256; do
|
||||
echo "build icons/hicolor/${i}x${i}/apps/badwolf.png: gen_icon icons/hicolor/scalable/apps/badwolf.svg
|
||||
width = $i
|
||||
height = $i"
|
||||
bundled="${bundled} icons/hicolor/${i}x${i}"
|
||||
icons_list="${icons_list} icons/hicolor/${i}x${i}/apps/badwolf.png"
|
||||
done >>config.ninja
|
||||
|
||||
cat >>config.ninja <<EOF
|
||||
build icons: phony | ${icons_list}
|
||||
build trans_man: phony | ${trans_man}
|
||||
build bundled: phony | icons trans_man
|
||||
|
||||
default ${all}
|
||||
|
||||
rule remove
|
||||
command = rm -fr \${in} \${foo}
|
||||
|
||||
build install: install | ${all}
|
||||
build clean: remove
|
||||
foo = ${all} ${OBJS} ${OBJS_test}
|
||||
build distclean: remove | clean
|
||||
foo = config.ninja configure.h install.sh
|
||||
build fullclean: remove | distclean
|
||||
foo = ${bundled}
|
||||
EOF
|
||||
|
||||
is_ok
|
||||
|
||||
printf 'Writing to ./install.sh ...'
|
||||
cat >install.sh <<EOF
|
||||
# Autogenerated by $arg0 $args
|
||||
|
||||
# doins <DIR> <filename ...>
|
||||
doins() {
|
||||
dir="\${DESTDIR}/\$1"; shift
|
||||
mkdir -p "\${dir}/" || exit 1
|
||||
|
||||
echo "\$@ → \${dir}/"
|
||||
cp -pr "\$@" "\${dir}/"
|
||||
}
|
||||
# newins <DIR> <orig-filename> <dest-filename>
|
||||
newins() {
|
||||
dir="\${DESTDIR}/\$1"
|
||||
mkdir -p "\${dir}/" || exit 1
|
||||
|
||||
echo "\$2 → \${dir}/\$3"
|
||||
cp -pr "\$2" "\${dir}/\$3"
|
||||
}
|
||||
|
||||
doins "${BINDIR}" ./badwolf
|
||||
doins "${MANDIR}/man1" ./badwolf.1
|
||||
for man in ${TRANS_MAN}; do
|
||||
newins "${MANDIR}/\${man}/man1" "./badwolf.\${man}.1" "badwolf.1"
|
||||
done
|
||||
doins "${DATADIR}" ./locale
|
||||
doins "${DATADIR}" ./interface.css
|
||||
doins "${APPSDIR}" badwolf.desktop
|
||||
doins "${DOCDIR}" ${DOCS}
|
||||
doins "${PREFIX}/share" icons
|
||||
|
||||
printf "\nNote: An example AppArmor profile has been installed at '${DOCDIR}/usr.bin.badwolf'\n"
|
||||
EOF
|
||||
|
||||
is_ok
|
||||
|
||||
echo 'Done, you can now run ninja or samu'
|
5
badwolf/configure.h
Executable file
|
@ -0,0 +1,5 @@
|
|||
#define DATADIR "/usr/local/share/badwolf"
|
||||
#define PACKAGE "Badwolf"
|
||||
#define _XOPEN_SOURCE 700
|
||||
#define _POSIX_C_SOURCE 200809L
|
||||
#define VERSION "1.3.0"
|
77
badwolf/decisions.md
Executable file
|
@ -0,0 +1,77 @@
|
|||
<!--
|
||||
SPDX-FileCopyrightText: 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
-->
|
||||
|
||||
# Decisions taken over the project lifetime
|
||||
## What is this?
|
||||
See <https://akazlou.com/posts-output/2015-11-09-every-project-should-have-decisions/>
|
||||
Basically, the idea is to have a file in your projects repo, where you record
|
||||
the decisions you make over the course of the project's lifetime.
|
||||
Rewriting history will not be done but Post-Scriptum notices will.
|
||||
|
||||
## 2023-07-23 : Switch from Makefile to *.ninja
|
||||
Problems:
|
||||
- Makefile+config.mk pretty much reached it's limits with manpage translations as you can't just string substitute your way out when it's both prefix & suffix.
|
||||
- meson/CMake/…: Still the same issues. With GNU autotools also becoming more and more problematic: <https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213>, <https://lists.gnu.org/archive/html/autoconf-patches/2022-09/msg00011.html>, <https://wiki.gentoo.org/wiki/Modern_C_porting>
|
||||
|
||||
Solution picked: Transform Makefile into a static build.ninja file, and make configure generate a config.ninja file with the dynamic variables, rules and targets written in.
|
||||
|
||||
## 2021-09-07 : Move to a ./configure script
|
||||
Problem: WebKitGTK gained a new ABI, changing 4.0 to 4.1 for libsoup3, which itself also meant some changes in badwolf
|
||||
|
||||
Usual solutions:
|
||||
- meson: It's intended usage of having a separated build directory would mean loosing the ability to provide commands to update translations files, icons, …
|
||||
- CMake: Same kind of problem as meson, while being significantly more complex and massive
|
||||
- GNU autotools: Not the kind of thing I would want to depend on, specially given it's automagic behavior
|
||||
- waf, scons, …: Just problems on themselves
|
||||
- Bazel: Just no.
|
||||
|
||||
The one I picked: Custom POSIX Shell script. Slightly similar to what musl, ffmpeg, vis, … have been doing.
|
||||
|
||||
## 2020-10-22 : Mark the context_id as A-Z instead of Hex
|
||||
The way I did it at first was to use the hexadecimal representation, but as it starts from 0 there could be confusions with a shortcut hint for alt-n, there could still be confusion with some kind of tab numbering but with a bit of usage it's hopefully going to be obvious.
|
||||
|
||||
## 2020-07-04 : Automatically switch to a user-created tab / Breaking the UI
|
||||
I got pointed out that when creating a new tab the user has to needlessly switch to it while it could be done when they request it.
|
||||
I also decided to still release it in a point release, so without bump of Major because while it does changes the behavior it doesn't break the associated meaning, while this would be a breaking change for an API I could take it as a minor adjustment in a user-interface.
|
||||
|
||||
Note: This would be an API if user-interface interactions could be scripted (like in HaikuOS) but I'm not aware of people actually doing this one with GTK programs.
|
||||
|
||||
## 2020-02-04 & 2020-02-09 : Use BSD extensions in the Makefile
|
||||
The BSD extensions += and ?= for variable extension is used to avoid having to explicitly pass a list of variables to make, thus making build recipes simpler.
|
||||
They are also compatible with GNU make so portability shouldn't have significantly dropped.
|
||||
Which also meant dropping `.POSIX` into the file so `CC` wouldn't be set by default to `c99` (which isn't what I want, the codebase is in C11).
|
||||
|
||||
## 2020-01-30 02:59 : Make window declaration static
|
||||
This allows to avoid a quite useless memory allocation that would only be freed at the end of the program.
|
||||
|
||||
## 2020-01-22 15:30 : Update copyright to Badwolf Authors
|
||||
I don't want copyright assignment to me or any organisation, it should belong to every contributor, meaning that any copyright change will need to be accepted by them or their contribution would need to be replaced if need to be.
|
||||
|
||||
## 2020-01-08 08:42:00Z : Start of the decisions.md file
|
||||
From memory and git log:
|
||||
|
||||
- Changelog is done when preparing for a release, it is copied into the git tag description. This means that there isn't a central file and isn't a changelog entry added with commits.
|
||||
- OpenPGP is deprecated in favor of signify, reasons being security and portability.
|
||||
- Prefer using lower and more standard/ubiquitous layers for implementations, one example is the about information with printf and Gtk Dialog rather than a custom scheme in WebKitGTK.
|
||||
- using GLib instead of POSIX was done at first but the quality/behaviour of GLib (like `g_malloc()` calling `abort()` on errors) reverted this decision.
|
||||
- WebKitGTK was picked because it is the only WebKit port which is maintained enough without a bus-factor (consider giving QtWebKit a hand too?).
|
||||
- The `.clang-format` file was copied from the one living in my home directory:
|
||||
- function declaration is at the start of the line to allow jumping to it with a simple editor
|
||||
- braces on their own lines to allow for comments space
|
||||
- "tabs for indentation and space for alignment" style is used for flexibility
|
||||
- mdoc was picked over other formats for the manpage, as it is implemented in mandoc and GNU groff, much simpler to read/write and transform to other formats (like HTML or Markdown).
|
||||
- Markdown was picked over other formats for informal documentation, it is a simple format supported by most forges, a format which is easier to write and parse could be considered
|
||||
- Proprietary systems are not supported for their lack of auditability and transparency.
|
||||
- C was picked because:
|
||||
1. I wanted to avoid being limited by binding completeness or model
|
||||
2. I think it is a good language which is fit for this purpose provided you are careful enough (such as using LLVM to it's full potential for checks)
|
||||
3. It is portable and doesn't introduces more dependencies than is already needed
|
||||
- POSIX was picked for it's portability (only known one where it's absent is Windows but it's not going to be supported)
|
||||
- Writing a portable (almost POSIX-only) Makefile with `pkg-config(1)` was picked over other build systems which tend to be over-complicated and rely on only one implementation.
|
||||
- Originally the URL entry accepted only valid URLs, this was changed to a bit of heuristics for fixing it when it was entered by the user.
|
||||
- No search entry is provided, this is to encourage users to avoid search engines as much as possible, support for SmartBookmarks with keywords (similar to DuckDuckGo/Searx !bangs) will be added after support for suggestions via bookmarks
|
||||
- Bookmarks are first-class citizens as they are data explicitly controlled by the user
|
||||
- No browsing history is provided, this is to encourage to use and improve bookmarks, it will be added later on with data retention limits, ability to wipe it and non-reachable from WebKit (and so the Wild Web).
|
||||
- Javascript is turned off by default with a checkbox to enable it temporarily, Permissions Requests (microphone, geolocation, …) are all denied, something similar to uMatrix and NoScript will eventually be done to fix this
|
226
badwolf/downloads.c
Executable file
|
@ -0,0 +1,226 @@
|
|||
// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "downloads.h"
|
||||
|
||||
#include "badwolf.h"
|
||||
#include "config.h"
|
||||
|
||||
#include <glib/gi18n.h> /* _() and other internationalization/localization helpers */
|
||||
|
||||
static void
|
||||
download_stop_iconCb_clicked(GtkButton *UNUSED(stop_icon), gpointer user_data)
|
||||
{
|
||||
WebKitDownload *webkit_download = (WebKitDownload *)user_data;
|
||||
|
||||
webkit_download_cancel(webkit_download);
|
||||
}
|
||||
|
||||
void
|
||||
download_format_elapsed(char *restrict formatted,
|
||||
size_t formatted_size,
|
||||
char *restrict format,
|
||||
int total)
|
||||
{
|
||||
/* flawfinder: ignore, format string only passed by ourselves */
|
||||
snprintf(formatted,
|
||||
formatted_size,
|
||||
format,
|
||||
total / 3600, /* hours */
|
||||
(total % 3600) / 60, /* minutes */
|
||||
total % 60); /* seconds */
|
||||
}
|
||||
|
||||
void
|
||||
download_new_entry(WebKitDownload *webkit_download, struct Download *download)
|
||||
{
|
||||
download->error = 0;
|
||||
download->container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, BADWOLF_DOWNLOAD_PADDING);
|
||||
download->progress = gtk_progress_bar_new();
|
||||
download->file_path = gtk_label_new(NULL);
|
||||
download->status = gtk_label_new(_("Download starting…"));
|
||||
download->icon =
|
||||
gtk_image_new_from_icon_name("network-idle-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR);
|
||||
download->stop_icon = gtk_button_new_from_icon_name("process-stop", GTK_ICON_SIZE_SMALL_TOOLBAR);
|
||||
|
||||
gtk_progress_bar_set_show_text(GTK_PROGRESS_BAR(download->progress), TRUE);
|
||||
gtk_label_set_ellipsize(GTK_LABEL(download->file_path), BADWOLF_DOWNLOAD_FILE_PATH_ELLIPSIZE);
|
||||
|
||||
g_signal_connect(
|
||||
download->stop_icon, "clicked", G_CALLBACK(download_stop_iconCb_clicked), webkit_download);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(download->container), download->icon, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(download->container), download->progress, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(download->container), download->stop_icon, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(download->container), download->status, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(download->container), download->file_path, FALSE, FALSE, 0);
|
||||
|
||||
gtk_list_box_insert(GTK_LIST_BOX(download->window->downloads_tab), download->container, -1);
|
||||
|
||||
gtk_widget_show_all(download->container);
|
||||
}
|
||||
|
||||
void
|
||||
downloadCb_created_destination(WebKitDownload *UNUSED(webkit_download),
|
||||
gchar *destination,
|
||||
gpointer user_data)
|
||||
{
|
||||
char *markup;
|
||||
struct Download *download = (struct Download *)user_data;
|
||||
|
||||
markup = g_markup_printf_escaped(
|
||||
"<a href=\"%s\">%s</a>", destination, webkit_uri_for_display(destination));
|
||||
|
||||
gtk_label_set_markup(GTK_LABEL(download->file_path), markup);
|
||||
g_free(markup);
|
||||
}
|
||||
|
||||
gboolean
|
||||
downloadCb_decide_destination(WebKitDownload *webkit_download,
|
||||
gchar *suggested_filename,
|
||||
gpointer user_data)
|
||||
{
|
||||
struct Client *browser = (struct Client *)user_data;
|
||||
gint chooser_response;
|
||||
GtkWindow *parent_window = GTK_WINDOW(browser->window->main_window);
|
||||
|
||||
GtkFileChooserNative *file_dialog =
|
||||
gtk_file_chooser_native_new(NULL, parent_window, GTK_FILE_CHOOSER_ACTION_SAVE, NULL, NULL);
|
||||
GtkFileChooser *file_chooser = GTK_FILE_CHOOSER(file_dialog);
|
||||
|
||||
gtk_file_chooser_set_current_name(file_chooser, suggested_filename);
|
||||
gtk_file_chooser_set_do_overwrite_confirmation(file_chooser, TRUE);
|
||||
webkit_download_set_allow_overwrite(webkit_download, TRUE);
|
||||
|
||||
chooser_response = gtk_native_dialog_run(GTK_NATIVE_DIALOG(file_dialog));
|
||||
|
||||
if(chooser_response == GTK_RESPONSE_ACCEPT)
|
||||
webkit_download_set_destination(webkit_download, gtk_file_chooser_get_uri(file_chooser));
|
||||
else
|
||||
webkit_download_cancel(webkit_download);
|
||||
|
||||
g_object_unref(file_dialog);
|
||||
|
||||
return FALSE; /* Let it propagate */
|
||||
}
|
||||
|
||||
void
|
||||
downloadCb_failed(WebKitDownload *webkit_download, GError *error, gpointer user_data)
|
||||
{
|
||||
struct Download *download = (struct Download *)user_data;
|
||||
/* flawfinder: ignore. proper buffer limits are used */
|
||||
char formatted[BUFSIZ];
|
||||
int total = (int)webkit_download_get_elapsed_time(webkit_download);
|
||||
char *format;
|
||||
|
||||
download->error = error;
|
||||
|
||||
if(g_error_matches(error, WEBKIT_DOWNLOAD_ERROR, WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER))
|
||||
format = _("%02i:%02i:%02i Download cancelled");
|
||||
else
|
||||
format = _("%02i:%02i:%02i Download error");
|
||||
|
||||
download_format_elapsed(formatted, sizeof(formatted), format, total);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(download->status), formatted);
|
||||
|
||||
gtk_image_set_from_icon_name(
|
||||
GTK_IMAGE(download->icon), "network-error-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR);
|
||||
}
|
||||
|
||||
void
|
||||
downloadCb_finished(WebKitDownload *webkit_download, gpointer user_data)
|
||||
{
|
||||
struct Download *download = (struct Download *)user_data;
|
||||
/* flawfinder: ignore. proper buffer limits are used */
|
||||
char formatted[BUFSIZ];
|
||||
int total = (int)webkit_download_get_elapsed_time(webkit_download);
|
||||
|
||||
gchar *format_size = g_format_size(webkit_download_get_received_data_length(webkit_download));
|
||||
|
||||
download_format_elapsed(
|
||||
formatted, sizeof(formatted), _("%02i:%02i:%02i Download finished"), total);
|
||||
|
||||
gtk_widget_destroy(download->stop_icon);
|
||||
|
||||
if(download->error == 0)
|
||||
{
|
||||
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(download->progress), 1);
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(download->progress), format_size);
|
||||
gtk_label_set_text(GTK_LABEL(download->status), formatted);
|
||||
gtk_image_set_from_icon_name(
|
||||
GTK_IMAGE(download->icon), "network-idle-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR);
|
||||
}
|
||||
|
||||
// TODO: Send notification
|
||||
}
|
||||
|
||||
void
|
||||
downloadCb_received_data(WebKitDownload *webkit_download,
|
||||
guint64 UNUSED(data_lenght),
|
||||
gpointer user_data)
|
||||
{
|
||||
struct Download *download = (struct Download *)user_data;
|
||||
/* flawfinder: ignore. proper buffer limits are used */
|
||||
char formatted[BUFSIZ];
|
||||
int total = (int)webkit_download_get_elapsed_time(webkit_download);
|
||||
|
||||
gchar *format_size = g_format_size(webkit_download_get_received_data_length(webkit_download));
|
||||
|
||||
download_format_elapsed(formatted, sizeof(formatted), _("%02i:%02i:%02i Downloading…"), total);
|
||||
|
||||
gtk_image_set_from_icon_name(
|
||||
GTK_IMAGE(download->icon), "network-receive-symbolic", GTK_ICON_SIZE_SMALL_TOOLBAR);
|
||||
gtk_label_set_text(GTK_LABEL(download->status), formatted);
|
||||
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(download->progress),
|
||||
webkit_download_get_estimated_progress(webkit_download));
|
||||
gtk_progress_bar_set_text(GTK_PROGRESS_BAR(download->progress), format_size);
|
||||
|
||||
g_free(format_size);
|
||||
}
|
||||
|
||||
GtkWidget *
|
||||
badwolf_downloads_tab_new()
|
||||
{
|
||||
return gtk_list_box_new();
|
||||
}
|
||||
|
||||
void
|
||||
badwolf_downloads_tab_attach(struct Window *window)
|
||||
{
|
||||
GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
|
||||
gtk_widget_set_name(scrolled_window, "browser__scrollwin_downloads");
|
||||
gtk_container_add(GTK_CONTAINER(scrolled_window), window->downloads_tab);
|
||||
gtk_notebook_insert_page(GTK_NOTEBOOK(window->notebook), scrolled_window, NULL, 0);
|
||||
|
||||
gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(window->notebook), scrolled_window, TRUE);
|
||||
|
||||
GtkWidget *tab_box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
|
||||
gtk_widget_set_name(tab_box, "browser__tabbox");
|
||||
GtkWidget *icon = gtk_image_new_from_icon_name("emblem-downloads", GTK_ICON_SIZE_SMALL_TOOLBAR);
|
||||
gtk_widget_set_name(icon, "browser__tabbox__icon");
|
||||
GtkWidget *label = gtk_label_new(_("Badwolf Downloads"));
|
||||
gtk_widget_set_name(label, "browser__tabbox__label");
|
||||
|
||||
#ifdef BADWOLF_TAB_BOX_WIDTH
|
||||
gtk_widget_set_size_request(label, BADWOLF_TAB_BOX_WIDTH, -1);
|
||||
#endif
|
||||
#ifdef BADWOLF_TAB_LABEL_CHARWIDTH
|
||||
gtk_label_set_width_chars(GTK_LABEL(label), BADWOLF_TAB_LABEL_CHARWIDTH);
|
||||
#endif
|
||||
gtk_widget_set_hexpand(tab_box, BADWOLF_TAB_HEXPAND);
|
||||
|
||||
gtk_label_set_ellipsize(GTK_LABEL(label), BADWOLF_TAB_LABEL_ELLIPSIZE);
|
||||
gtk_label_set_single_line_mode(GTK_LABEL(label), TRUE);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(tab_box), icon, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start(GTK_BOX(tab_box), label, TRUE, TRUE, 0);
|
||||
|
||||
gtk_widget_set_tooltip_text(tab_box, _("Badwolf Downloads"));
|
||||
gtk_notebook_set_tab_label(GTK_NOTEBOOK(window->notebook), scrolled_window, tab_box);
|
||||
gtk_notebook_set_menu_label_text(
|
||||
GTK_NOTEBOOK(window->notebook), scrolled_window, _("Badwolf Downloads"));
|
||||
|
||||
gtk_widget_show_all(tab_box);
|
||||
}
|
31
badwolf/downloads.h
Executable file
|
@ -0,0 +1,31 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "badwolf.h"
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
struct Download
|
||||
{
|
||||
struct Window *window;
|
||||
|
||||
GtkWidget *container;
|
||||
GtkWidget *icon;
|
||||
GtkWidget *stop_icon;
|
||||
GtkWidget *file_path;
|
||||
GtkWidget *progress;
|
||||
GtkWidget *status;
|
||||
GError *error;
|
||||
};
|
||||
|
||||
void download_new_entry(WebKitDownload *webkit_download, struct Download *download);
|
||||
void
|
||||
downloadCb_created_destination(WebKitDownload *download, gchar *destination, gpointer user_data);
|
||||
gboolean downloadCb_decide_destination(WebKitDownload *download,
|
||||
gchar *suggested_filename,
|
||||
gpointer user_data);
|
||||
void downloadCb_failed(WebKitDownload *webkit_download, GError *error, gpointer user_data);
|
||||
void downloadCb_finished(WebKitDownload *download, gpointer user_data);
|
||||
void downloadCb_received_data(WebKitDownload *download, guint64 data_lenght, gpointer user_data);
|
||||
GtkWidget *badwolf_downloads_tab_new();
|
||||
void badwolf_downloads_tab_attach(struct Window *window);
|
BIN
badwolf/downloads.o
Executable file
31
badwolf/fmt.c
Executable file
|
@ -0,0 +1,31 @@
|
|||
// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "fmt.h"
|
||||
|
||||
/* flawfinder: ignore. `alpha_digits` is never modified */
|
||||
static const char alpha_digits[26] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
void
|
||||
fmt_context_id(uint64_t num, char *out)
|
||||
{
|
||||
/* flawfinder: ignore. bound checks are done */
|
||||
char buf[BADWOLF_CTX_SIZ] = {0, 0, 0, 0, 0, 0, 0};
|
||||
int len = 0;
|
||||
|
||||
buf[++len] = ' ';
|
||||
buf[++len] = ':';
|
||||
|
||||
buf[++len] = alpha_digits[num % 26];
|
||||
num /= 26;
|
||||
while(num > 0 && len < (BADWOLF_CTX_SIZ - 1))
|
||||
{
|
||||
buf[++len] = alpha_digits[(num - 1) % 26];
|
||||
num /= 26;
|
||||
}
|
||||
|
||||
for(int i = 0; i < len; i++)
|
||||
{
|
||||
out[i] = buf[len - i];
|
||||
}
|
||||
}
|
7
badwolf/fmt.h
Executable file
|
@ -0,0 +1,7 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include <stdint.h> // uint64_t
|
||||
|
||||
#define BADWOLF_CTX_SIZ 7
|
||||
void fmt_context_id(uint64_t num, char *out);
|
BIN
badwolf/fmt.o
Normal file
58
badwolf/fmt_test.c
Executable file
|
@ -0,0 +1,58 @@
|
|||
// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "fmt.h"
|
||||
|
||||
#include <glib.h>
|
||||
#include <inttypes.h> // PRIu64
|
||||
#include <stdint.h> // UINT64_C
|
||||
|
||||
static void
|
||||
fmt_context_id_test(void)
|
||||
{
|
||||
struct
|
||||
{
|
||||
const char *expect;
|
||||
uint64_t context_id;
|
||||
} cases[] = {
|
||||
//
|
||||
{"A: ", UINT64_C(0)},
|
||||
{"B: ", UINT64_C(1)},
|
||||
{"Y: ", UINT64_C(24)},
|
||||
{"Z: ", UINT64_C(25)},
|
||||
{"AA: ", UINT64_C(26)},
|
||||
{"AB: ", UINT64_C(27)},
|
||||
{"AZ: ", UINT64_C(51)},
|
||||
{"BA: ", UINT64_C(52)},
|
||||
{"BB: ", UINT64_C(53)},
|
||||
{"QKWW: ", UINT64_C(4294967296)}, // 2^32
|
||||
{"JFHI: ", UINT64_C(9223372036854775808)}, // 2^63
|
||||
{"TLPO: ", UINT64_C(18446744073709551614)}, // 2^64 -2
|
||||
{"TLPP: ", UINT64_C(18446744073709551615)}, // 2^64 -1 (aka UINT64_MAX)
|
||||
};
|
||||
|
||||
for(size_t i = 0; i < sizeof(cases) / sizeof(cases[0]); i++)
|
||||
{
|
||||
g_info("fmt_context_id(%" PRIu64 ")", cases[i].context_id);
|
||||
/* flawfinder: ignore. bound checks are done */
|
||||
char got[BADWOLF_CTX_SIZ] = {0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
fmt_context_id(cases[i].context_id, got);
|
||||
|
||||
if(strncmp(got, cases[i].expect, BADWOLF_CTX_SIZ) != 0)
|
||||
{
|
||||
g_error("expected: \"%s\", got: \"%s\"", cases[i].expect, got);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func("/fmt_context_id/test", fmt_context_id_test);
|
||||
|
||||
return g_test_run();
|
||||
}
|
BIN
badwolf/icons/hicolor/128x128/apps/badwolf.png
Executable file
After Width: | Height: | Size: 8.5 KiB |
BIN
badwolf/icons/hicolor/24x24/apps/badwolf.png
Executable file
After Width: | Height: | Size: 1 KiB |
BIN
badwolf/icons/hicolor/256x256/apps/badwolf.png
Executable file
After Width: | Height: | Size: 20 KiB |
BIN
badwolf/icons/hicolor/32x32/apps/badwolf.png
Executable file
After Width: | Height: | Size: 1.5 KiB |
BIN
badwolf/icons/hicolor/48x48/apps/badwolf.png
Executable file
After Width: | Height: | Size: 2.5 KiB |
BIN
badwolf/icons/hicolor/64x64/apps/badwolf.png
Executable file
After Width: | Height: | Size: 3.6 KiB |
2
badwolf/icons/hicolor/scalable/apps/badwolf.svg
Executable file
|
@ -0,0 +1,2 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="64" height="64" version="1.1" viewBox="0 0 16.933 16.933" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><clipPath id="clippy"><rect width="16.933" height="16.933" ry="1"/></clipPath><radialGradient id="b" cx="8.6972" cy="-4.2398" r="8.4667" gradientTransform="matrix(-2.612 .056083 -.038123 -1.7755 30.491 -9.1064)" gradientUnits="userSpaceOnUse"><stop stop-color="#139e7c" offset="0"/><stop stop-color="#122548" offset="1"/></radialGradient><linearGradient id="linearGradient846" x1="-10.467" x2="-10.736" y1="4.7058" y2="4.7058" gradientUnits="userSpaceOnUse"><stop offset="0"/><stop stop-opacity="0" offset="1"/></linearGradient><linearGradient id="linearGradient874" x1="7.4633" x2="6.7959" y1="8.9935" y2="11.681" gradientUnits="userSpaceOnUse"><stop stop-color="#00ffd6" offset="0"/><stop stop-color="#007f64" offset="1"/></linearGradient></defs><g clip-path="url(#clippy)"><rect width="16.933" height="16.933" ry="0" fill="url(#b)"/><path d="m21.868-1.992a13.402 8.1853 0 0 1-6.7132 7.0929 13.402 8.1853 0 0 1-13.414-0.012891 13.402 8.1853 0 0 1-6.6767-7.1058l13.402 0.025759z" fill="url(#linearGradient846)" stroke="#23e0b7" stroke-width=".50271"/><path d="m5.9543 19.118c0.32505-2.6594 0.93668-3.1497-0.16577-5.2442-0.59266-1.049-2.2826-2.3153-3.1406-3.3342-0.48055-0.7492-1.6045-1.3225-2.2864-2.7903-0.15968-0.98447 2.224 1.2239 2.8948 1.1873 0.25739-0.2849-1.6007-2.177-1.4286-2.8633 0.14314-0.57062 0.21225-1.138 0.78124-1.5697 1.1973-0.3312 3.3913 2.8127 4.9273 3.2604 2.1106-0.72487 3.1742 1.4901 4.8202 1.8301 1.3227 0.15657 3.2074 1.5937 4.2524 2.9708-0.84502 0.59047-3.0445-0.7063-4.4104-0.10811-0.53812 0.82524 1.0996 5.2192 1.3863 5.7331" fill="#120d09" fill-rule="evenodd" stroke="url(#linearGradient874)" stroke-width=".67495" style="mix-blend-mode:luminosity"/></g></svg>
|
After Width: | Height: | Size: 1.8 KiB |
8
badwolf/icons_size.sh
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
|
||||
# SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
# Transforms an icon size from the Icon Theme Specification to rsvg-convert(1) options
|
||||
#sed -r -e 's;^([^x]*)x([^@]*)$;-w \1 -h \2;' -e 's;^([^x]*)x([^@]*)@(.*)$;-w \1 -h \2 -z \3;'
|
||||
sed -r 's;^([^x]*)x([^@]*)$;-w \1 -h \2;'
|
31
badwolf/install
Executable file
|
@ -0,0 +1,31 @@
|
|||
# Autogenerated by ./configure
|
||||
|
||||
# doins <DIR> <filename ...>
|
||||
doins() {
|
||||
dir="${DESTDIR}/$1"; shift
|
||||
mkdir -p "${dir}/" || exit 1
|
||||
|
||||
echo "$@ → ${dir}/"
|
||||
cp -pr "$@" "${dir}/"
|
||||
}
|
||||
# newins <DIR> <orig-filename> <dest-filename>
|
||||
newins() {
|
||||
dir="${DESTDIR}/$1"
|
||||
mkdir -p "${dir}/" || exit 1
|
||||
|
||||
echo "$2 → ${dir}/$3"
|
||||
cp -pr "$2" "${dir}/$3"
|
||||
}
|
||||
|
||||
doins "/usr/local/bin" ./badwolf
|
||||
doins "/usr/local/share/man/man1" ./badwolf.1
|
||||
for man in de fr tr vi; do
|
||||
newins "/usr/local/share/man/${man}/man1" "./badwolf.${man}.1" "badwolf.1"
|
||||
done
|
||||
doins "/usr/local/share/badwolf" ./locale
|
||||
doins "/usr/local/share/badwolf" ./interface.css
|
||||
doins "/usr/local/share/applications" badwolf.desktop
|
||||
doins "/usr/local/share/doc/badwolf-1.3.0" usr.bin.badwolf README.md KnowledgeBase.md interface.md
|
||||
doins "/usr/local/share" icons
|
||||
|
||||
printf "\nNote: An example AppArmor profile has been installed at '/usr/local/share/doc/badwolf-1.3.0/usr.bin.badwolf'\n"
|
31
badwolf/install.sh
Executable file
|
@ -0,0 +1,31 @@
|
|||
# Autogenerated by ./configure
|
||||
|
||||
# doins <DIR> <filename ...>
|
||||
doins() {
|
||||
dir="${DESTDIR}/$1"; shift
|
||||
mkdir -p "${dir}/" || exit 1
|
||||
|
||||
echo "$@ → ${dir}/"
|
||||
cp -pr "$@" "${dir}/"
|
||||
}
|
||||
# newins <DIR> <orig-filename> <dest-filename>
|
||||
newins() {
|
||||
dir="${DESTDIR}/$1"
|
||||
mkdir -p "${dir}/" || exit 1
|
||||
|
||||
echo "$2 → ${dir}/$3"
|
||||
cp -pr "$2" "${dir}/$3"
|
||||
}
|
||||
|
||||
doins "/usr/local/bin" ./badwolf
|
||||
doins "/usr/local/share/man/man1" ./badwolf.1
|
||||
for man in de fr tr vi; do
|
||||
newins "/usr/local/share/man/${man}/man1" "./badwolf.${man}.1" "badwolf.1"
|
||||
done
|
||||
doins "/usr/local/share/badwolf" ./locale
|
||||
doins "/usr/local/share/badwolf" ./interface.css
|
||||
doins "/usr/local/share/applications" badwolf.desktop
|
||||
doins "/usr/local/share/doc/badwolf-1.3.0" usr.bin.badwolf README.md KnowledgeBase.md interface.md
|
||||
doins "/usr/local/share" icons
|
||||
|
||||
printf "\nNote: An example AppArmor profile has been installed at '/usr/local/share/doc/badwolf-1.3.0/usr.bin.badwolf'\n"
|
7
badwolf/interface.css
Executable file
|
@ -0,0 +1,7 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#browser__location, #browser__statuslabel, #browser__tabbox__context_label { font-family: monospace; }
|
||||
button:checked label { font-weight: bold; }
|
51
badwolf/interface.md
Executable file
|
@ -0,0 +1,51 @@
|
|||
<!--
|
||||
SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
SPDX-License-Identifier: BSD-3-Clause
|
||||
-->
|
||||
|
||||
# Badwolf
|
||||
- A tablist with a new tab button at the end
|
||||
- right-clicking on the tablist gives you the list in a context-menu format
|
||||
- middle-clicking on the focused tab closes it
|
||||
- Each tab contains a Browser View or the Downloads View
|
||||
|
||||
## Tab Labels
|
||||
- An A-Z represented number identifying the webkit process context
|
||||
- An icon to indicate if a media is playing
|
||||
- The title of the web view
|
||||
- A close button
|
||||
|
||||
## Browser View
|
||||
|
||||
The Browser View contains the following items:
|
||||
- Toolbar
|
||||
- WebKit WebView
|
||||
- Status Bar
|
||||
|
||||
### Toolbar
|
||||
- Backward navigation button followed by a smaller forward navigation button
|
||||
- Separator
|
||||
- Javascript-markup toggler marked "JS" followed by an image-loading toggler marked "IMG"
|
||||
- Potentially some future elements
|
||||
- Location entry linked to the WebKit WebView, with integrated progress indication also linked to the WebKit WebView
|
||||
- Potentially some future elements
|
||||
- Print button
|
||||
- Potentially some future elements
|
||||
|
||||
The element focused by default is the location entry.
|
||||
|
||||
### Status bar
|
||||
- Search entry linked to the WebKit WebView
|
||||
- Potentially some future elements
|
||||
- Label showing where the mouse is pointing
|
||||
- Potentially some future elements
|
||||
|
||||
## Downloads View
|
||||
|
||||
The download view is a table contains the following items on each row corresponding to each download:
|
||||
- Icon linked to the network status
|
||||
- Progress bar, with integrated received-size indication
|
||||
- (when downloading) Cancelling button
|
||||
- Label about the current status
|
||||
- Link to download destination
|
||||
- Potentially some future elements
|
237
badwolf/keybindings.c
Executable file
|
@ -0,0 +1,237 @@
|
|||
// BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#include "keybindings.h"
|
||||
|
||||
#include "badwolf.h"
|
||||
|
||||
#include <glib/gi18n.h> /* _() */
|
||||
|
||||
static gboolean
|
||||
about_dialogCb_activate_link(GtkAboutDialog *about_dialog, gchar *uri, gpointer user_data)
|
||||
{
|
||||
struct Window *window = (struct Window *)user_data;
|
||||
|
||||
badwolf_new_tab(GTK_NOTEBOOK(window->notebook), new_browser(window, uri, NULL), TRUE);
|
||||
|
||||
gtk_window_close(GTK_WINDOW(about_dialog));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
badwolf_about_dialog(GtkWindow *main_window, gpointer user_data)
|
||||
{
|
||||
struct Window *window = (struct Window *)user_data;
|
||||
GtkWidget *about_dialog = gtk_about_dialog_new();
|
||||
|
||||
char *comments = NULL;
|
||||
|
||||
comments = g_strdup_printf(_("Minimalist and privacy-oriented web browser based on WebKitGTK\n"
|
||||
"Runtime WebKit version: %d.%d.%d"),
|
||||
webkit_get_major_version(),
|
||||
webkit_get_minor_version(),
|
||||
webkit_get_micro_version());
|
||||
|
||||
gtk_window_set_transient_for(GTK_WINDOW(about_dialog), main_window);
|
||||
gtk_window_set_destroy_with_parent(GTK_WINDOW(about_dialog), TRUE);
|
||||
|
||||
gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(about_dialog),
|
||||
"SPDX License Identifiers: BSD-3-Clause AND CC-BY-SA-4.0");
|
||||
gtk_about_dialog_set_copyright(
|
||||
GTK_ABOUT_DIALOG(about_dialog),
|
||||
"2019-2021 Badwolf Authors <https://hacktivis.me/projects/badwolf>");
|
||||
gtk_about_dialog_set_website(GTK_ABOUT_DIALOG(about_dialog), homepage);
|
||||
gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(about_dialog), comments);
|
||||
gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(about_dialog), version);
|
||||
gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(about_dialog), "badwolf");
|
||||
|
||||
g_signal_connect(about_dialog, "activate-link", G_CALLBACK(about_dialogCb_activate_link), window);
|
||||
|
||||
gtk_dialog_run(GTK_DIALOG(about_dialog));
|
||||
gtk_widget_destroy(about_dialog);
|
||||
}
|
||||
|
||||
static void
|
||||
toggle_caret_browsing(WebKitWebView *webView)
|
||||
{
|
||||
WebKitSettings *settings = webkit_web_view_get_settings(webView);
|
||||
|
||||
webkit_settings_set_enable_caret_browsing(settings,
|
||||
!webkit_settings_get_enable_caret_browsing(settings));
|
||||
|
||||
webkit_web_view_set_settings(webView, settings);
|
||||
}
|
||||
|
||||
/* commonCb_key_press_event: Global callback for keybindings
|
||||
*
|
||||
* Theses shortcuts should be avoided as much as possible:
|
||||
* - Single key shortcuts (ie. backspace and space)
|
||||
* - Triple key shortcuts (except for Ctrl+Shift)
|
||||
* - Unix Terminal shortcuts (specially Ctrl-W)
|
||||
*
|
||||
* loosely follows https://developer.gnome.org/hig/guidelines/keyboard.html
|
||||
*/
|
||||
gboolean
|
||||
commonCb_key_press_event(struct Window *window, GdkEvent *event, struct Client *browser)
|
||||
{
|
||||
GtkNotebook *notebook = GTK_NOTEBOOK(window->notebook);
|
||||
|
||||
if(((GdkEventKey *)event)->state & GDK_CONTROL_MASK)
|
||||
{
|
||||
if(browser != NULL)
|
||||
{
|
||||
switch(((GdkEventKey *)event)->keyval)
|
||||
{
|
||||
/*case GDK_KEY_F4:*/
|
||||
case GDK_KEY_q:
|
||||
webkit_web_view_try_close(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_w:
|
||||
webkit_web_view_try_close(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_r:
|
||||
if(((GdkEventKey *)event)->state & GDK_SHIFT_MASK)
|
||||
webkit_web_view_reload_bypass_cache(browser->webView);
|
||||
else
|
||||
webkit_web_view_reload(browser->webView);
|
||||
|
||||
return TRUE;
|
||||
case GDK_KEY_f:
|
||||
gtk_widget_grab_focus(browser->search);
|
||||
return TRUE;
|
||||
case GDK_KEY_l:
|
||||
gtk_widget_grab_focus(browser->location);
|
||||
return TRUE;
|
||||
case GDK_KEY_bracketleft:
|
||||
webkit_web_view_go_back(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_bracketright:
|
||||
webkit_web_view_go_forward(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_0:
|
||||
webkit_web_view_set_zoom_level(WEBKIT_WEB_VIEW(browser->webView), 1);
|
||||
return TRUE;
|
||||
case GDK_KEY_p:
|
||||
webkit_print_operation_run_dialog(webkit_print_operation_new(browser->webView),
|
||||
GTK_WINDOW(browser->window->main_window));
|
||||
return TRUE;
|
||||
case GDK_KEY_Return:
|
||||
if(((GdkEventKey *)event)->state & GDK_SHIFT_MASK)
|
||||
badwolf_new_tab(notebook, new_browser(window, NULL, NULL), TRUE);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((((GdkEventKey *)event)->keyval >= GDK_KEY_0) &&
|
||||
(((GdkEventKey *)event)->keyval <= GDK_KEY_9))
|
||||
gtk_notebook_set_current_page(notebook, (gint)(((GdkEventKey *)event)->keyval - GDK_KEY_1));
|
||||
switch(((GdkEventKey *)event)->keyval)
|
||||
{
|
||||
case GDK_KEY_Page_Down:
|
||||
gtk_notebook_next_page(notebook);
|
||||
return TRUE;
|
||||
case GDK_KEY_Page_Up:
|
||||
gtk_notebook_prev_page(notebook);
|
||||
return TRUE;
|
||||
case GDK_KEY_t:
|
||||
badwolf_new_tab(notebook, new_browser(window, NULL, NULL), TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if((((GdkEventKey *)event)->state & GDK_MOD1_MASK))
|
||||
{
|
||||
if((browser != NULL) && (((GdkEventKey *)event)->keyval == GDK_KEY_d))
|
||||
{
|
||||
webkit_web_view_try_close(browser->webView);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
switch(((GdkEventKey *)event)->keyval)
|
||||
{
|
||||
case GDK_KEY_Left:
|
||||
gtk_notebook_prev_page(notebook);
|
||||
return TRUE;
|
||||
case GDK_KEY_Right:
|
||||
gtk_notebook_next_page(notebook);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if(browser != NULL)
|
||||
{
|
||||
switch(((GdkEventKey *)event)->keyval)
|
||||
{
|
||||
case GDK_KEY_F5:
|
||||
webkit_web_view_reload(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_Escape:
|
||||
webkit_web_view_stop_loading(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_F7:
|
||||
toggle_caret_browsing(browser->webView);
|
||||
return TRUE;
|
||||
case GDK_KEY_F12:
|
||||
webkit_web_inspector_show(webkit_web_view_get_inspector(browser->webView));
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(((GdkEventKey *)event)->keyval)
|
||||
{
|
||||
case GDK_KEY_F1:
|
||||
badwolf_about_dialog(GTK_WINDOW(window->main_window), window);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
WebViewCb_key_press_event(WebKitWebView *UNUSED(webView), GdkEvent *event, gpointer user_data)
|
||||
{
|
||||
struct Client *browser = (struct Client *)user_data;
|
||||
|
||||
if(commonCb_key_press_event(browser->window, event, browser)) return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
boxCb_key_press_event(GtkWidget *UNUSED(widget), GdkEvent *event, gpointer user_data)
|
||||
{
|
||||
struct Client *browser = (struct Client *)user_data;
|
||||
|
||||
if(commonCb_key_press_event(browser->window, event, browser)) return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
main_windowCb_key_press_event(GtkWidget *UNUSED(widget), GdkEvent *event, gpointer user_data)
|
||||
{
|
||||
struct Window *window = (struct Window *)user_data;
|
||||
|
||||
if(commonCb_key_press_event(window, event, NULL)) return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gboolean
|
||||
tab_boxCb_button_release_event(GtkWidget *UNUSED(widget), GdkEvent *event, gpointer user_data)
|
||||
{
|
||||
struct Client *browser = (struct Client *)user_data;
|
||||
|
||||
if(((GdkEventButton *)event)->button == GDK_BUTTON_MIDDLE)
|
||||
{
|
||||
webkit_web_view_try_close(browser->webView);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
17
badwolf/keybindings.h
Executable file
|
@ -0,0 +1,17 @@
|
|||
// SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
#ifndef KEYBINDINGS_H_INCLUDED
|
||||
#define KEYBINDINGS_H_INCLUDED
|
||||
#include "badwolf.h"
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <webkit2/webkit2.h>
|
||||
|
||||
gboolean boxCb_key_press_event(GtkWidget *widget, GdkEvent *event, gpointer user_data);
|
||||
gboolean commonCb_key_press_event(struct Window *window, GdkEvent *event, struct Client *browser);
|
||||
gboolean main_windowCb_key_press_event(GtkWidget *widget, GdkEvent *event, gpointer user_data);
|
||||
gboolean WebViewCb_key_press_event(WebKitWebView *webView, GdkEvent *event, gpointer user_data);
|
||||
gboolean tab_boxCb_button_release_event(GtkWidget *widget, GdkEvent *event, gpointer user_data);
|
||||
|
||||
#endif /* KEYBINDINGS_H_INCLUDED */
|
BIN
badwolf/keybindings.o
Executable file
BIN
badwolf/locale/de/LC_MESSAGES/Badwolf.mo
Executable file
BIN
badwolf/locale/fr/LC_MESSAGES/Badwolf.mo
Executable file
BIN
badwolf/locale/pt_BR/LC_MESSAGES/Badwolf.mo
Executable file
BIN
badwolf/locale/tr/LC_MESSAGES/Badwolf.mo
Executable file
BIN
badwolf/locale/vi/LC_MESSAGES/Badwolf.mo
Executable file
0
badwolf/mo/.keep
Executable file
237
badwolf/po/de.po
Executable file
|
@ -0,0 +1,237 @@
|
|||
# SPDX-FileCopyrightText: 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Badwolf 1.0.3+g1b10b33.develop\n"
|
||||
"Report-Msgid-Bugs-To: contact+badwolf-msgid@hacktivis.me\n"
|
||||
"POT-Creation-Date: 2023-07-31 14:04+0200\n"
|
||||
"PO-Revision-Date: 2023-07-31 13:57+0200\n"
|
||||
"Last-Translator: Ben K. <ben-k@tutanota.com>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.3.2\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Download cancelled"
|
||||
msgstr "%02i:%02i:%02i Herunterladen abgebrochen"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Download error"
|
||||
msgstr "%02i:%02i:%02i Herunterladen fehlgeschlagen"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Download finished"
|
||||
msgstr "%02i:%02i:%02i Fertig Heruntergeladen"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Downloading…"
|
||||
msgstr "%02i:%02i:%02i Lade herunter…"
|
||||
|
||||
msgid "Badwolf Downloads"
|
||||
msgstr "Heruntergeladene Dateien"
|
||||
|
||||
msgid "Bookmarks: Done.\n"
|
||||
msgstr "Lesezeichen: Erledigt. \n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: Found %d bookmarks.\n"
|
||||
msgstr "Lesezeichen: %d Lesezeichen gefunden. \n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: No loadable file found at %s\n"
|
||||
msgstr "Lesezeichen: Keine ladbare Datei unter %s gefunden\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: loading at %s\n"
|
||||
msgstr "Lesezeichen: %s geladen\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Bookmarks: unable to create new XPath context\n"
|
||||
msgstr "Lesezeichen: Die Datei \"%s\" konnte nicht geparst werden\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Bookmarks: unable to evaluate XPath expression \"%s\"\n"
|
||||
msgstr "Lesezeichen: Die Datei \"%s\" konnte nicht geparst werden\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: unable to parse file \"%s\"\n"
|
||||
msgstr "Lesezeichen: Die Datei \"%s\" konnte nicht geparst werden\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "Buildtime WebKit version: %d.%d.%d\n"
|
||||
msgstr "Ausführende WebKit-Version: %d.%d.%d\n"
|
||||
|
||||
msgid "Continue"
|
||||
msgstr "Weiter"
|
||||
|
||||
msgid ""
|
||||
"Couldn't verify the TLS certificate to ensure a better security of the "
|
||||
"connection. You might want to verify your machine and network.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Das TLS-Zertifikat konnte nicht verifiziert werden, um eine bessere "
|
||||
"Sicherheit der Verbindung sicherzustellen. Sie möchten vielleicht ihr Gerät "
|
||||
"und ihr Netzwerk überprüfen. \n"
|
||||
|
||||
msgid "Crashed"
|
||||
msgstr "Abgestürtzt"
|
||||
|
||||
msgid "Download starting…"
|
||||
msgstr "Download startet…"
|
||||
|
||||
msgid "Empty Title"
|
||||
msgstr "Kein Titel"
|
||||
|
||||
msgid "Error: Some unknown error occurred validating the certificate.\n"
|
||||
msgstr ""
|
||||
"Fehler: Es ist ein unbekannter Fehler beim überprüfen des Zertifikats "
|
||||
"aufgetreten.\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Error: The X509 Certificate Authority is unknown.\n"
|
||||
msgstr "Fehler: Das Zertifikat wird als unsicher angesehen.\n"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Error: The certificate has been revoked.\n"
|
||||
msgstr ""
|
||||
"Fehler: Das Zertifikat ist abgelaufen. Bitte überprüfen Sie, ob die Uhr "
|
||||
"ihres Systems richtig eingestellt ist.\n"
|
||||
|
||||
msgid "Error: The certificate has expired. Check your system's clock.\n"
|
||||
msgstr ""
|
||||
"Fehler: Das Zertifikat ist abgelaufen. Bitte überprüfen Sie, ob die Uhr "
|
||||
"ihres Systems richtig eingestellt ist.\n"
|
||||
|
||||
msgid "Error: The certificate is considered to be insecure.\n"
|
||||
msgstr "Fehler: Das Zertifikat wird als unsicher angesehen.\n"
|
||||
|
||||
msgid "Error: The certificate isn't valid yet. Check your system's clock.\n"
|
||||
msgstr ""
|
||||
"Fehler: Das Zertifikat ist noch nicht gültig. Bitte überprüfen Sie, ob die "
|
||||
"Uhr ihres Systems richtig eingestellt ist.\n"
|
||||
|
||||
msgid "Error: The given identity doesn't match the expected one.\n"
|
||||
msgstr ""
|
||||
"Fehler: Die gegebene Identität passt nicht mit der Erwarteten zusammen.\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Minimalist and privacy-oriented web browser based on WebKitGTK\n"
|
||||
"Runtime WebKit version: %d.%d.%d"
|
||||
msgstr ""
|
||||
"Minimalistischer und Privatsphäre-orientierter Internetbrowser basierend of "
|
||||
"WebKitGTK\n"
|
||||
"Runtime WebKit version: %d.%d.%d"
|
||||
|
||||
msgid "New tab"
|
||||
msgstr "Neuer Reiter"
|
||||
|
||||
msgid "Open new tab"
|
||||
msgstr "Neuen Reiter öffnen"
|
||||
|
||||
msgid "Out of Memory"
|
||||
msgstr "Ihnen scheint der Arbeitsspeicher ausgegangen zu sein! (Out of Memory)"
|
||||
|
||||
#, c-format
|
||||
msgid "Running Badwolf version: %s\n"
|
||||
msgstr "Ausführende Badwolf-Version: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Runtime WebKit version: %d.%d.%d\n"
|
||||
msgstr "Ausführende WebKit-Version: %d.%d.%d\n"
|
||||
|
||||
#, c-format
|
||||
msgid "TLS Error for %s."
|
||||
msgstr "TLS-Fehler für %s."
|
||||
|
||||
msgid "Temporarily Add Exception"
|
||||
msgstr "Eine Ausnahme machen"
|
||||
|
||||
msgid "Toggle javascript"
|
||||
msgstr "JavaScript ein-/ausschalten"
|
||||
|
||||
msgid "Toggle loading images automatically"
|
||||
msgstr "Das automatische Laden von Bildern ein-/ausschalten"
|
||||
|
||||
msgid "Unknown Crash"
|
||||
msgstr "Unbekannter Absturz"
|
||||
|
||||
msgid "_IMG"
|
||||
msgstr "_IMG"
|
||||
|
||||
msgid "_JS"
|
||||
msgstr "_JS"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Checking for userscripts matching %s\n"
|
||||
msgstr "badwolf: Suche nach Userscripts mit %s \n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Error reading userscript: %s\n"
|
||||
msgstr "badwolf: Fehler beim Leser von Userscript: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Failed to list userscripts: Out of Memory\n"
|
||||
msgstr ""
|
||||
"badwolf: Kann Userscripts nicht auflisten: Arbeitsspeicher nicht "
|
||||
"ausreichend\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Failed to list userscripts: Read Error\n"
|
||||
msgstr "badwolf: Kann Userscripts nicht auslisten: Lesefehler\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Notice: Found %zd userscripts\n"
|
||||
msgstr "badwolf: Hinweis: %zd Userscripts gefunden\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Notice: No userscripts found\n"
|
||||
msgstr "badwolf: Hinweis: Keine Userscripts gefunden\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Notice: Userscript loading: %d loaded, %d failed to load\n"
|
||||
msgstr ""
|
||||
"badwolf: Hinweis: Userscripts werden geladen: %d erfolgreich, %d "
|
||||
"fehlerhalft\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: content-filter loaded, adding to content-manager…\n"
|
||||
msgstr ""
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: failed to compile content-filters.json, err: [%d] %s\n"
|
||||
msgstr ""
|
||||
"badwolf: kompilieren von content-filters.json fehlgeschlagen, err: [%d] %s\n"
|
||||
|
||||
#, fuzzy, c-format
|
||||
msgid "badwolf: failed to load content-filter, err: [%d] %s\n"
|
||||
msgstr ""
|
||||
"badwolf: kompilieren von content-filters.json fehlgeschlagen, err: [%d] %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "content-filters file set to: %s\n"
|
||||
msgstr "Inhaltsfilter-Datei wurde gesetzt auf: %s\n"
|
||||
|
||||
msgid "search in current page"
|
||||
msgstr "Die aktuelle Seite durchsuchen"
|
||||
|
||||
msgid "the web process crashed.\n"
|
||||
msgstr "Der Webprozess ist abgestürzt.\n"
|
||||
|
||||
msgid "the web process exceeded the memory limit.\n"
|
||||
msgstr "Der Webprozess hat das Arbeitsspeicherlimit überschritten.\n"
|
||||
|
||||
msgid "the web process terminated for an unknown reason.\n"
|
||||
msgstr "Der Webprozess wurde aus unbekannten Gründen beendet.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "webkit-web-extension directory set to: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#. TRANSLATOR Ignore this entry. Done for forcing Unicode in xgettext.
|
||||
msgid "ø"
|
||||
msgstr "ø"
|
607
badwolf/po/de_man.po
Executable file
|
@ -0,0 +1,607 @@
|
|||
# SPDX-FileCopyrightText: 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Badwolf 1.2.0+geb77866.develop\n"
|
||||
"Report-Msgid-Bugs-To: contact+badwolf-msgid@hacktivis.me\n"
|
||||
"POT-Creation-Date: 2023-09-19 07:34+0200\n"
|
||||
"PO-Revision-Date: 2023-07-31 13:36+0200\n"
|
||||
"Last-Translator: <ben@ist-toll.xyz>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 3.3.2\n"
|
||||
|
||||
#. type: Dd
|
||||
#: badwolf.1:4
|
||||
#, no-wrap
|
||||
msgid "2022-07-13"
|
||||
msgstr "2022-07-13"
|
||||
|
||||
#. type: Dt
|
||||
#: badwolf.1:5
|
||||
#, no-wrap
|
||||
msgid "BADWOLF 1"
|
||||
msgstr "BADWOLF 1"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:7
|
||||
#, no-wrap
|
||||
msgid "NAME"
|
||||
msgstr "NAME"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:9
|
||||
msgid "E<.Nm badwolf>"
|
||||
msgstr "E<.Nm badwolf>"
|
||||
|
||||
#. type: Nd
|
||||
#: badwolf.1:9
|
||||
#, no-wrap
|
||||
msgid "minimalist and privacy-oriented web browser based on WebKitGTK"
|
||||
msgstr "minimalistischer und privatsphäre-orientierter Webbrowser basierend auf WebKitGTK"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:10
|
||||
#, no-wrap
|
||||
msgid "SYNOPSIS"
|
||||
msgstr "ÜBERSICHT"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:14
|
||||
msgid "E<.Nm> E<.Op Ar webkit/gtk options> E<.Op Ar URLs or paths>"
|
||||
msgstr "E<.Nm> E<.Op Ar WebKit-/GTK-Optionen> E<.Op Ar URLs oder Pfade>"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:14
|
||||
#, no-wrap
|
||||
msgid "DESCRIPTION"
|
||||
msgstr "BESCHREIBUNG"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:17
|
||||
msgid ""
|
||||
"E<.Nm> is a minimalist browser that cares about privacy, it is based on "
|
||||
"WebKitGTK and thus also accepts WebKitGTK (and dependencies) flags and "
|
||||
"environment variables, unfortunately there doesn't seems to be manpages for "
|
||||
"theses."
|
||||
msgstr ""
|
||||
"E<.Nm> ist ein minimalistischer Webbrowser, der die Privatssphäre seiner "
|
||||
"Nutzer respektiert. Er basiert auf WebKitGTK und akzeptiert daher alle "
|
||||
"Optionen und Umgebungsvariablen, die WebKitGTK (und Abhängigkeiten) auch "
|
||||
"akzeptieren, leider gibt es dafür keine Manpages."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:21
|
||||
msgid ""
|
||||
"Runtime configuration specific to E<.Nm> will probably get added at a later "
|
||||
"release."
|
||||
msgstr ""
|
||||
"Laufzeitspezifische Konfigurationsmöglichkeiten für E<.Nm> werden "
|
||||
"wahrscheinlich in einer späteren Version hinzugefügt."
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:21
|
||||
#, no-wrap
|
||||
msgid "KEYBINDINGS"
|
||||
msgstr "TASTENKOMBINATIONEN"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:25
|
||||
msgid ""
|
||||
"The following section lists the keybinding by their action, each item is "
|
||||
"described by the widget the focus is on or E<.Aq any> if it works for the "
|
||||
"whole window, followed by the keybind it grabs."
|
||||
msgstr ""
|
||||
"Der folgende Abschnitt listet die unterstützten Tastenkombinationen und ihre "
|
||||
"Funktionen auf. Vor jeder Tastenkombination steht der greifende Kontext."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:26
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-Scroll"
|
||||
msgstr "webview Ctrl-Scroll"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:28
|
||||
msgid "Zooms the webpage in/out."
|
||||
msgstr "Zoomt die Website rein/raus."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:28
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-0"
|
||||
msgstr "webview Ctrl-0"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:30
|
||||
msgid "Resets webpage zoom to 100%."
|
||||
msgstr "Setzt den Zoom auf 100% zurück."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:30
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-MousePrimary, webview MouseMiddle"
|
||||
msgstr "webview Ctrl-MousePrimary, webview MouseMiddle"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:32
|
||||
msgid ""
|
||||
"Opens the selected link in a new tab. (Note: JS still overrides the event)"
|
||||
msgstr ""
|
||||
"Öffnet den hervorgehobenen Link in einem neuen Tab. (Hinweis: Dieses "
|
||||
"Verhalten kann mit Javascript manipuliert werden)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:32
|
||||
#, no-wrap
|
||||
msgid "any Ctrl-t"
|
||||
msgstr "any Ctrl-t"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:34
|
||||
msgid "Creates a new tab (in a new session, similar as pressing the button)"
|
||||
msgstr ""
|
||||
"Eröffnet einen neuen Tab in einer neuen Sitzung (ähnlich wie der \"Neuer "
|
||||
"Tab\"-Knopf)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:34
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-F4, browser Alt-d"
|
||||
msgstr "browser Ctrl-F4, browser Alt-d"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:36
|
||||
msgid "Closes the current tab"
|
||||
msgstr "Schließt den aktuellen Tab"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:36
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-f"
|
||||
msgstr "browser Ctrl-f"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:38
|
||||
msgid "Focuses on the search entry"
|
||||
msgstr "Hebt das Suchfeld hervor"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:38
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-l"
|
||||
msgstr "browser Ctrl-l"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:40
|
||||
msgid "Focuses on the location(URL) entry"
|
||||
msgstr "Hebt die Addresszeile hervor"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:40
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-Shift-r / Ctrl-r, browser F5"
|
||||
msgstr "browser Ctrl-Shift-r / Ctrl-r, browser F5"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:42
|
||||
msgid "Reloads the content in the current tab (with/without clearing cache)"
|
||||
msgstr "Lädt den aktuellen Tab neu (jeweils mit und ohne den Cache zu leeren)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:42
|
||||
#, no-wrap
|
||||
msgid "browser Escape"
|
||||
msgstr "browser Escape"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:44
|
||||
msgid "Stops loading the content in the current tab"
|
||||
msgstr "Bricht das Laden ab"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:44
|
||||
#, no-wrap
|
||||
msgid "browser F7"
|
||||
msgstr "browser F7"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:46
|
||||
msgid "Toggles caret browsing."
|
||||
msgstr "Aktiviert den Tastaturmodus (Navigation mit dem Textcursor)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:46
|
||||
#, no-wrap
|
||||
msgid "browser F12"
|
||||
msgstr "browser F12"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:48
|
||||
msgid "Opens the web inspector."
|
||||
msgstr "Öffnet die Entwickleroptionen"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:48
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-[ / Ctrl-]"
|
||||
msgstr "browser Ctrl-[ / Ctrl-]"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:50
|
||||
msgid "Go back/forward in current tab's history"
|
||||
msgstr "Zur vorherigen/nächsten Seite im Suchverlauf gehen"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:50
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-p"
|
||||
msgstr "browser Ctrl-p"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:52
|
||||
msgid "Print the current page. (spawns a dialog)"
|
||||
msgstr "Druckt die aktuelle Seite aus. (Eröffnet Dialogfenster)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:52
|
||||
#, no-wrap
|
||||
msgid "any Alt-Left / Alt-Right"
|
||||
msgstr "any Alt-Left / Alt-Right"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:54 badwolf.1:65
|
||||
msgid "Go to the previous/next tab"
|
||||
msgstr "Wechseln zum vorherigen/nächsten Tab"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:54
|
||||
#, no-wrap
|
||||
msgid "any F1"
|
||||
msgstr "any F1"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:56
|
||||
msgid "Shows the about dialog"
|
||||
msgstr "Zeigt Informationen über das Programm"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:56
|
||||
#, no-wrap
|
||||
msgid "any Alt-n"
|
||||
msgstr "any Alt-n"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:59
|
||||
msgid ""
|
||||
"Where n is any numeric-row key. Go to the n-th tab, 0 goes to the last one."
|
||||
msgstr "n ist eine Zahl. Wechseln zum Tab n. 0 wechselt zum letzten Tab."
|
||||
|
||||
#. type: Ss
|
||||
#: badwolf.1:60
|
||||
#, no-wrap
|
||||
msgid "DEFAULT ONES"
|
||||
msgstr "STANDARDTASTENKOMBINATIONEN"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:62
|
||||
msgid "Here is a incomplete list of the default Webkit/GTK keybindings:"
|
||||
msgstr ""
|
||||
"Im Folgenden befindet sich eine unvollständige Liste mit standartmäßigen "
|
||||
"Webkit-/GTK-Tastenkombinationen:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:63
|
||||
#, no-wrap
|
||||
msgid "any Ctrl-PageUp / Ctrl-PageDown"
|
||||
msgstr "any Ctrl-PageUp / Ctrl-PageDown"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:65
|
||||
#, no-wrap
|
||||
msgid "search Ctrl-g / Ctrl-Shift-g"
|
||||
msgstr "search Ctrl-g / Ctrl-Shift-g"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:67
|
||||
msgid ""
|
||||
"When the search box is focused it goes to the Next/Previous search term."
|
||||
msgstr "Zum nächsten/vorherigen Suchtreffer gehen"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:67
|
||||
#, no-wrap
|
||||
msgid "search Escape"
|
||||
msgstr "search Escape"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:69
|
||||
msgid "Cancels current search"
|
||||
msgstr "Bricht die Suche ab"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:69
|
||||
#, no-wrap
|
||||
msgid "textarea Ctrl-;"
|
||||
msgstr "textarea Ctrl-;"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:71
|
||||
msgid "Insert Emoji"
|
||||
msgstr "Emoji einfügen😚️"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:72
|
||||
#, no-wrap
|
||||
msgid "ENVIRONMENT"
|
||||
msgstr "UMGEBUNGSVARIABLEN"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:74
|
||||
#, no-wrap
|
||||
msgid "Ev BADWOLF_L10N"
|
||||
msgstr "Ev BADWOLF_L10N"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:80
|
||||
msgid ""
|
||||
"A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and "
|
||||
"COUNTRY in ISO-3166. For example E<.Ic BADWOLF_L10N=\"en_GB:fr_FR:"
|
||||
"de_DE\">. When this variable isn't set, spelling isn't activated. A more "
|
||||
"generic variable name is also intended to be used in the future."
|
||||
msgstr ""
|
||||
"Eine mit Doppelpunkten getrennte List im Format sprache_LAND wo die sprache "
|
||||
"ISO-639 und das LAND ISO-3166 ist. Z.B.: E<.Ic BADWOLF_L10N=\"en_GB:fr_FR:"
|
||||
"de_DE\">. Wenn diese Variable nicht gesetzt ist, gibt es keine "
|
||||
"Rechtschreibprüfung. Der Variablenname könnte in der Zukunft durch einen "
|
||||
"generischeren ersetzt werden."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:85
|
||||
msgid ""
|
||||
"To get the list of supported dictionaries execute E<.Ic enchant-lsmod-2 -"
|
||||
"list-dicts> or before enchant 2.0: E<.Ic enchant-lsmod -list-dicts>"
|
||||
msgstr ""
|
||||
"Um eine List mit installierten Sprächen zu bekommen, muss E<.Ic enchant-"
|
||||
"lsmod-2 -list-dicts> ausgeführt werden. Bei Versionen vor enchant 2.0: E<.Ic "
|
||||
"enchant-lsmod -list-dicts>"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:86
|
||||
#, no-wrap
|
||||
msgid "FILES"
|
||||
msgstr "DATEIEN"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:92
|
||||
msgid ""
|
||||
"The following paths are using E<.Xr sh 1> syntax to correctly support XDG "
|
||||
"Base Directory Specification, you can use the E<.Xr echo 1> command to check "
|
||||
"where it is on your system."
|
||||
msgstr ""
|
||||
"Die im Folgenden aufgelistetene Pfade benutzen E<.Xr sh 1>-Syntaxe, um der "
|
||||
"XDG-Base-Directory-Specifation gerecht zu werden. Du kannst den Befehl E<.Xr "
|
||||
"echo 1> benutzen, um zu gucken, wo das auf dem Computer ist."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:94
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json"
|
||||
msgstr "Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:97
|
||||
msgid ""
|
||||
"WebKit-specific content-filter file, this allows to block unwanted content "
|
||||
"(ads, nagware, ...). For some introductory information about the format see:"
|
||||
msgstr ""
|
||||
"WebKit-spezifischer Inhaltsfilter-Datei, mit der unerwünschte Inhalte (z.B. "
|
||||
"Werbung, Schadsoftware, ...) geblockt werden können. Für mehr Informationen, "
|
||||
"siehe:"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:102
|
||||
msgid "For a converter using AblockPlus-style filters, try:"
|
||||
msgstr ""
|
||||
"Es gibt einen Übersetzer, der AdblockPlus-Filterlisten in Webkit-Blocklisten "
|
||||
"übersetzen kann:"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:105
|
||||
msgid "For a ready-to-use file (that you should update periodically), try:"
|
||||
msgstr ""
|
||||
"Für eine fertige Datei (die regelmäßig aktualisiert werden sollte), siehe:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:106
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters"
|
||||
msgstr "Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:109
|
||||
msgid ""
|
||||
"This is where the compiled filters are stored, the file(s) in it are "
|
||||
"automatically generated and so shouldn't be edited. Documented here only "
|
||||
"for sandboxing / access-control purposes."
|
||||
msgstr ""
|
||||
"Hier werden kompilierte Filter gespeichert. Diese Dateien werden automatisch "
|
||||
"generiert und sollten deswegen nicht bearbeitet werden. Diese Datei wird "
|
||||
"hier überhaupt nur dokumentiert, damit sie in Sandboxen/Zugriffskontrollen "
|
||||
"eingearbeitet werden kann."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:109
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:114
|
||||
msgid ""
|
||||
"XBEL (XML Bookmark Exchange Language) file, known to be currently supported "
|
||||
"by: E<.Xr elinks 1>, E<.Xr konqueror 1>, E<.Xr kbookmarkeditor 1>."
|
||||
msgstr ""
|
||||
"XBEL (XML Bookmark Exchange Language) Datei, wird momentan unterstützt von: "
|
||||
"E<.Xr elinks 1>, E<.Xr konqueror 1>, E<.Xr kbookmarkeditor 1>."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:116
|
||||
msgid "You can do a symbolic link from their path, but you might prefer to use"
|
||||
msgstr ""
|
||||
"Du kannst einfach eine Verknüpfung zu deren Dateien erstellen, aber "
|
||||
"vielleicht möchtest du lieber"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:120
|
||||
msgid ""
|
||||
"which is natively supported by E<.Nm> to automatically merge multiple XBEL "
|
||||
"files."
|
||||
msgstr ""
|
||||
"benutzen, welches von E<.Nm> systemeigen unterstützt wird und mehrer XBEL-"
|
||||
"Dateien zusammenfügt."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:122
|
||||
msgid ""
|
||||
"Also the bookmark entries aren't re-sorted, so you might want to put your "
|
||||
"most frequently used ones at the top of the file."
|
||||
msgstr ""
|
||||
"Außerdem werden die Lesezeicheneinträge nicht neusortiert, deswegen ist es "
|
||||
"eventuell gewünscht, die am häufigsten genutzen Einträge an den Anfang der "
|
||||
"Datei zu schieben."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:124
|
||||
msgid "For more information about this format see:"
|
||||
msgstr "Für weitere Informationen über dieses Format siehe:"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:127
|
||||
msgid "For an example XBEL file see:"
|
||||
msgstr "Für eine Beispiel-XBEL-Datei siehe:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:128
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:130
|
||||
msgid "Directory containing the"
|
||||
msgstr "Verzeichnis mit den"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:133
|
||||
msgid ""
|
||||
"to be loaded into E<.Nm . Note: They aren't the JavaScript-based Web-"
|
||||
"Extensions supported by Firefox or Chrome, but native code in shared objects "
|
||||
"using the WebKitGTK API.>"
|
||||
msgstr ""
|
||||
"die in E<.Nm geladen werden sollen. Hinweis: Es handelt sich dabei nicht um "
|
||||
"Javascript-basierte Erweitungen wie man sie von Firefox oder Chrome kennt, "
|
||||
"sondern um systemeigenen Code aus Shared Objects der WebKitGTK API.>"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:135
|
||||
msgid "Examples of useful extensions may be found at:"
|
||||
msgstr "Für Beispiele nützlicher Erweiterungen siehe:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:136
|
||||
#, no-wrap
|
||||
msgid "Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css"
|
||||
msgstr "Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:137
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:142
|
||||
msgid ""
|
||||
"CSS files (respectively system and user-level) for styling E<.Nm> "
|
||||
"interface. See"
|
||||
msgstr ""
|
||||
"CSS-Dateien (jeweils System und User-Ebene), um das Aussehen das Interfaces "
|
||||
"anzupassen. Siehe"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:144
|
||||
msgid "for the properties being available."
|
||||
msgstr "für die zur Verfügung stehen Eigenschaften."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:150
|
||||
msgid ""
|
||||
"For testing your styles I would recommend using the E<.Ev "
|
||||
"GTK_DEBUG=interactive> environment variable on launching E<.Nm> and going to "
|
||||
"the CSS tab."
|
||||
msgstr ""
|
||||
"Für das Austesten eines Aussehens ist es zu empfehlen die Umgebungsvariable "
|
||||
"E<.Ev GTK_DEBUG=interactive> biem Start zu setzen und dann in den CSS tab zu "
|
||||
"gehen."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:150
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:156
|
||||
msgid ""
|
||||
"Directory containing JS userscripts (ending in E<.Ic .js>) ran at the start "
|
||||
"of page loads, nesting down into iframes, useful to override website "
|
||||
"behaviors or add missing features to websites."
|
||||
msgstr ""
|
||||
"Verzeichnis, welches die JavaScript-Userscripts enthält (Dateiendung E<.Ic ."
|
||||
"js>), die am Start des Ladens jeder Seite ausgeführt werden und sich auch in "
|
||||
"iframes verschachteln. Nützlich um Website-Verhalten zu manipulieren oder "
|
||||
"fehlende Funktionen zu ergänzen."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:159
|
||||
msgid ""
|
||||
"Please note that for now unlike GreaseMonkey-style userscripts, they are "
|
||||
"always run, regardless of the hostname / URLs."
|
||||
msgstr ""
|
||||
"Es ist anzumerken, dass — anders als bei GreaseMonkey-artigen Userscripts — "
|
||||
"die E<.Nm>-Userscripts immer ausgeführt werden, unabhängig von Hostname/URLs."
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:160
|
||||
#, no-wrap
|
||||
msgid "AUTHORS"
|
||||
msgstr "AUTOREN."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:162
|
||||
msgid "E<.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me>"
|
||||
msgstr ""
|
||||
"E<.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me>, "
|
||||
"Übersetzung von Ben Kaps"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:162
|
||||
#, no-wrap
|
||||
msgid "BUGS"
|
||||
msgstr "BUGS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:164
|
||||
msgid "You can submit contributions or tickets to"
|
||||
msgstr "Verbesserungen oder Fehlerberichte können unter "
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:167
|
||||
msgid "with E<.Xr git-send-email 1> for patches."
|
||||
msgstr "mit E<.Xr git-send-email 1> für Patches eingereicht werden."
|
221
badwolf/po/fr.po
Executable file
|
@ -0,0 +1,221 @@
|
|||
# BadWolf: Minimalist and privacy-oriented WebKitGTK+ browser
|
||||
# SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Badwolf 0.3.0+gd88f2e7\n"
|
||||
"Report-Msgid-Bugs-To: contact+badwolf-msgid@hacktivis.me\n"
|
||||
"POT-Creation-Date: 2023-07-16 04:25+0200\n"
|
||||
"PO-Revision-Date: 2021-04-10 18:43+0200\n"
|
||||
"Last-Translator: Haelwenn (lanodan) Monnier <contact@hacktivis.me>\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Download cancelled"
|
||||
msgstr "%02i:%02i:%02i Téléchargement annulé"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Download error"
|
||||
msgstr "%02i:%02i:%02i Erreur du téléchargement"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Download finished"
|
||||
msgstr "%02i:%02i:%02i Téléchargement finit"
|
||||
|
||||
#, c-format
|
||||
msgid "%02i:%02i:%02i Downloading…"
|
||||
msgstr "%02i:%02i:%02i Téléchargement en cours…"
|
||||
|
||||
msgid "Badwolf Downloads"
|
||||
msgstr "Téléchargements Badwolf"
|
||||
|
||||
msgid "Bookmarks: Done.\n"
|
||||
msgstr "Marque-Pages: Terminé.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: Found %d bookmarks.\n"
|
||||
msgstr "Marque-Pages: %d marque-pages trouvés.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: No loadable file found at %s\n"
|
||||
msgstr "Marques-Pages: Aucun fichier chargeable trouvé à %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: loading at %s\n"
|
||||
msgstr "Marques-Pages: chargement à %s\n"
|
||||
|
||||
msgid "Bookmarks: unable to create new XPath context\n"
|
||||
msgstr "Marques-Pages: Échec à la création du contexte XPath\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: unable to evaluate XPath expression \"%s\"\n"
|
||||
msgstr "Marques-Pages: Échec à l'évaluation de l'expression XPath « %s »\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Bookmarks: unable to parse file \"%s\"\n"
|
||||
msgstr "Marques-Pages: Ëchec au parsage du fichier « %s »\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Buildtime WebKit version: %d.%d.%d\n"
|
||||
msgstr "Version WebKit à la compilation: %d.%d.%d\n"
|
||||
|
||||
msgid "Continue"
|
||||
msgstr "Continuer"
|
||||
|
||||
msgid ""
|
||||
"Couldn't verify the TLS certificate to ensure a better security of the "
|
||||
"connection. You might want to verify your machine and network.\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"Impossibilité de vérifier le certificat TLS pour assurer une meilleure "
|
||||
"sécurité de la connection. Pensez potentiellement à vérifier votre machine "
|
||||
"et son réseau.\n"
|
||||
"\n"
|
||||
|
||||
msgid "Crashed"
|
||||
msgstr "Crash"
|
||||
|
||||
msgid "Download starting…"
|
||||
msgstr "Démarrage du téléchargement"
|
||||
|
||||
msgid "Empty Title"
|
||||
msgstr "Titre Vide"
|
||||
|
||||
msgid "Error: Some unknown error occurred validating the certificate.\n"
|
||||
msgstr ""
|
||||
"Erreur : Une erreur inconnue est apparue pendant la validation du "
|
||||
"certificat.\n"
|
||||
|
||||
msgid "Error: The X509 Certificate Authority is unknown.\n"
|
||||
msgstr "Erreur : L'autorité de certification (CA X509) est inconnue.\n"
|
||||
|
||||
msgid "Error: The certificate has been revoked.\n"
|
||||
msgstr "Erreur : Le certificat à été révoqué.\n"
|
||||
|
||||
msgid "Error: The certificate has expired. Check your system's clock.\n"
|
||||
msgstr "Erreur : Le certificat a expiré.\n"
|
||||
|
||||
msgid "Error: The certificate is considered to be insecure.\n"
|
||||
msgstr "Erreur : Le certificat est considéré comme non-sécurisé.\n"
|
||||
|
||||
msgid "Error: The certificate isn't valid yet. Check your system's clock.\n"
|
||||
msgstr "Erreur : Le certificat n'est pas encore valide.\n"
|
||||
|
||||
msgid "Error: The given identity doesn't match the expected one.\n"
|
||||
msgstr "Erreur : L'identité ne correspond pas à celle attendue.\n"
|
||||
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Minimalist and privacy-oriented web browser based on WebKitGTK\n"
|
||||
"Runtime WebKit version: %d.%d.%d"
|
||||
msgstr ""
|
||||
"Navigateur WebKitGTK+ minimaliste et orienté vie privée\n"
|
||||
"Version WebKit au lancement: %d.%d.%d"
|
||||
|
||||
msgid "New tab"
|
||||
msgstr "Nouvel onglet"
|
||||
|
||||
msgid "Open new tab"
|
||||
msgstr "Ouvrir un nouvel onglet"
|
||||
|
||||
msgid "Out of Memory"
|
||||
msgstr "Manque de Mémoire"
|
||||
|
||||
#, c-format
|
||||
msgid "Running Badwolf version: %s\n"
|
||||
msgstr "Version de Badwolf: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "Runtime WebKit version: %d.%d.%d\n"
|
||||
msgstr "Version WebKit au lancement: %d.%d.%d\n"
|
||||
|
||||
#, c-format
|
||||
msgid "TLS Error for %s."
|
||||
msgstr "Erreur TLS pour %s."
|
||||
|
||||
msgid "Temporarily Add Exception"
|
||||
msgstr "Ajouter Temporairement une Exception"
|
||||
|
||||
msgid "Toggle javascript"
|
||||
msgstr "(Dés)activer javascript"
|
||||
|
||||
msgid "Toggle loading images automatically"
|
||||
msgstr "(Dés)activer le chargement automatique des images"
|
||||
|
||||
msgid "Unknown Crash"
|
||||
msgstr "Crash inconnu"
|
||||
|
||||
msgid "_IMG"
|
||||
msgstr "_IMG"
|
||||
|
||||
msgid "_JS"
|
||||
msgstr "_JS"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Checking for userscripts matching %s\n"
|
||||
msgstr "badwolf: Recherche de userscripts correspondant à %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Error reading userscript: %s\n"
|
||||
msgstr "badwolf: Erreur de lecture d'usercript: %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Failed to list userscripts: Out of Memory\n"
|
||||
msgstr "badwolf: Échec de listage des userscripts : Manque de mémoire\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Failed to list userscripts: Read Error\n"
|
||||
msgstr "badwolf: Échec de listage des userscripts : Erreur de lecture\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Notice: Found %zd userscripts\n"
|
||||
msgstr "badwolf: Notice: %zd userscripts trouvés\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Notice: No userscripts found\n"
|
||||
msgstr "badwolf: Notice: Aucun userscripts trouvés\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: Notice: Userscript loading: %d loaded, %d failed to load\n"
|
||||
msgstr "badwolf: Notice: Chargement des userscripts: %d chargés, %d en erreur\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: content-filter loaded, adding to content-manager…\n"
|
||||
msgstr "badwolf: content-filter chargé, ajout à content-manager…\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: failed to compile content-filters.json, err: [%d] %s\n"
|
||||
msgstr "badwolf: échec de compilation de content-filters.json, err: [%d] %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "badwolf: failed to load content-filter, err: [%d] %s\n"
|
||||
msgstr "badwolf: échec de chargement de content-filter, err: [%d] %s\n"
|
||||
|
||||
#, c-format
|
||||
msgid "content-filters file set to: %s\n"
|
||||
msgstr "Fichier content-filters configuré à: %s\n"
|
||||
|
||||
msgid "search in current page"
|
||||
msgstr "recherche dans la page courante"
|
||||
|
||||
msgid "the web process crashed.\n"
|
||||
msgstr "le processus web a cessé de fonctionner.\n"
|
||||
|
||||
msgid "the web process exceeded the memory limit.\n"
|
||||
msgstr "le processus web a dépassé la limitation de mémoire.\n"
|
||||
|
||||
msgid "the web process terminated for an unknown reason.\n"
|
||||
msgstr "le processus web s’est interrompu pour une raison inconnue.\n"
|
||||
|
||||
#, c-format
|
||||
msgid "webkit-web-extension directory set to: %s\n"
|
||||
msgstr "Répertoire webkit-web-extension configuré à %s\n"
|
||||
|
||||
#. TRANSLATOR Ignore this entry. Done for forcing Unicode in xgettext.
|
||||
msgid "ø"
|
||||
msgstr ""
|
606
badwolf/po/fr_man.po
Executable file
|
@ -0,0 +1,606 @@
|
|||
# SPDX-FileCopyrightText: 2019-2023 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: contact+badwolf-msgid@hacktivis.me\n"
|
||||
"POT-Creation-Date: 2023-03-17 08:18+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. type: Dd
|
||||
#: badwolf.1:4
|
||||
#, no-wrap
|
||||
msgid "2022-07-13"
|
||||
msgstr "2022-07-13"
|
||||
|
||||
#. type: Dt
|
||||
#: badwolf.1:5
|
||||
#, no-wrap
|
||||
msgid "BADWOLF 1"
|
||||
msgstr "BADWOLF 1"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:7
|
||||
#, no-wrap
|
||||
msgid "NAME"
|
||||
msgstr "NAME"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:9
|
||||
msgid "E<.Nm badwolf>"
|
||||
msgstr "E<.Nm badwolf>"
|
||||
|
||||
#. type: Nd
|
||||
#: badwolf.1:9
|
||||
#, no-wrap
|
||||
msgid "minimalist and privacy-oriented web browser based on WebKitGTK"
|
||||
msgstr "navigateur minimaliste et orienté vie-privée basé sur WebKitGTK"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:10
|
||||
#, no-wrap
|
||||
msgid "SYNOPSIS"
|
||||
msgstr "SYNOPSIS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:14
|
||||
msgid "E<.Nm> E<.Op Ar webkit/gtk options> E<.Op Ar URLs or paths>"
|
||||
msgstr "E<.Nm> E<.Op Ar options webkit/gtk> E<.Op Ar URLs or chemins>"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:14
|
||||
#, no-wrap
|
||||
msgid "DESCRIPTION"
|
||||
msgstr "DESCRIPTION"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:17
|
||||
msgid ""
|
||||
"E<.Nm> is a minimalist browser that cares about privacy, it is based on "
|
||||
"WebKitGTK and thus also accepts WebKitGTK (and dependencies) flags and "
|
||||
"environment variables, unfortunately there doesn't seems to be manpages for "
|
||||
"theses."
|
||||
msgstr ""
|
||||
"E<.Nm> est un navigateur minimaliste qui prend soin de la vie privée, c'est "
|
||||
"basé WebKitGTK et accept donc les options et variables d'environements de "
|
||||
"WebKitGTK et ses dépendances, malheuresement il ne semble pas avoir de pages "
|
||||
"de man pour celles-ci."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:21
|
||||
msgid ""
|
||||
"Runtime configuration specific to E<.Nm> will probably get added at a later "
|
||||
"release."
|
||||
msgstr ""
|
||||
"Une configuration dynamique spécifique à E<.Nm> sera sans doute rajoutée "
|
||||
"dans une version suivante."
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:21
|
||||
#, no-wrap
|
||||
msgid "KEYBINDINGS"
|
||||
msgstr "RACCOURCIS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:25
|
||||
msgid ""
|
||||
"The following section lists the keybinding by their action, each item is "
|
||||
"described by the widget the focus is on or E<.Aq any> if it works for the "
|
||||
"whole window, followed by the keybind it grabs."
|
||||
msgstr ""
|
||||
"Cette section liste les raccourcis et leurs actions, chaque point est décris "
|
||||
"avec le widget actif ou avec E<.Aq tout> quand il fonctionne sur la fenêtre "
|
||||
"entière, suivit par le raccourcis."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:26
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-Scroll"
|
||||
msgstr "vueweb Ctrl-Défilement"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:28
|
||||
msgid "Zooms the webpage in/out."
|
||||
msgstr "(Dé)-Grossir le zoom de la page."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:28
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-0"
|
||||
msgstr "vueweb Ctrl-0"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:30
|
||||
msgid "Resets webpage zoom to 100%."
|
||||
msgstr "Remettre le zoom de la page à 100%."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:30
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-MousePrimary, webview MouseMiddle"
|
||||
msgstr "vueweb Ctrl-SourisPremier, vueweb SourisMilieu"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:32
|
||||
msgid ""
|
||||
"Opens the selected link in a new tab. (Note: JS still overrides the event)"
|
||||
msgstr ""
|
||||
"Ouvrir le lien sélectionné dans un nouvel onglet. (Note: JS modifie quand-"
|
||||
"même l'action)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:32
|
||||
#, no-wrap
|
||||
msgid "any Ctrl-t"
|
||||
msgstr "tout Ctrl-t"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:34
|
||||
msgid "Creates a new tab (in a new session, similar as pressing the button)"
|
||||
msgstr ""
|
||||
"Créer un nouvel onglet (dans une nouvelle session, comme un apuis sur le "
|
||||
"bouton dédié)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:34
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-F4, browser Alt-d"
|
||||
msgstr "navigateur Ctrl-F4, navigateur Alt-d"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:36
|
||||
msgid "Closes the current tab"
|
||||
msgstr "Fermer l'onglet courant."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:36
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-f"
|
||||
msgstr "navigateur Ctrl-f"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:38
|
||||
msgid "Focuses on the search entry"
|
||||
msgstr "Aller dans le champ de recherche."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:38
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-l"
|
||||
msgstr "navigateur Ctrl-l"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:40
|
||||
msgid "Focuses on the location(URL) entry"
|
||||
msgstr "Aller dans la barre d'URL."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:40
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-Shift-r / Ctrl-r, browser F5"
|
||||
msgstr "navigateur Ctrl-Maj-r / Ctrl-r, navigateur F5"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:42
|
||||
msgid "Reloads the content in the current tab (with/without clearing cache)"
|
||||
msgstr ""
|
||||
"Recharger le contenu dans l'onglet courant (avec/sans nettoyer le cache)."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:42
|
||||
#, no-wrap
|
||||
msgid "browser Escape"
|
||||
msgstr "navigateur Échap"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:44
|
||||
msgid "Stops loading the content in the current tab"
|
||||
msgstr "Arrêter le chargement dans l'onglet courant."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:44
|
||||
#, no-wrap
|
||||
msgid "browser F7"
|
||||
msgstr "navigateur F7"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:46
|
||||
msgid "Toggles caret browsing."
|
||||
msgstr "(Dé)-Activer la navigation par curseur."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:46
|
||||
#, no-wrap
|
||||
msgid "browser F12"
|
||||
msgstr "navigateur F12"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:48
|
||||
msgid "Opens the web inspector."
|
||||
msgstr "Ouvrir les outils de dévelopement."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:48
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-[ / Ctrl-]"
|
||||
msgstr "navigateur Ctrl-[ / Ctrl-]"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:50
|
||||
msgid "Go back/forward in current tab's history"
|
||||
msgstr "Naviguer dans l'historique courrant précédent/suivant."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:50
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-p"
|
||||
msgstr "navigateur Ctrl-p"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:52
|
||||
msgid "Print the current page. (spawns a dialog)"
|
||||
msgstr "Imprimer la page courante. (ouvre une nouvelle fenêtre)"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:52
|
||||
#, no-wrap
|
||||
msgid "any Alt-Left / Alt-Right"
|
||||
msgstr "tout Alt-Gauche / Alt-Droite"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:54 badwolf.1:65
|
||||
msgid "Go to the previous/next tab"
|
||||
msgstr "Aller à l'onglet précédent/suivant."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:54
|
||||
#, no-wrap
|
||||
msgid "any F1"
|
||||
msgstr "tout F1"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:56
|
||||
msgid "Shows the about dialog"
|
||||
msgstr "Montrer la fenêtre d'À Propos."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:56
|
||||
#, no-wrap
|
||||
msgid "any Alt-n"
|
||||
msgstr "tout Alt-n"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:59
|
||||
msgid ""
|
||||
"Where n is any numeric-row key. Go to the n-th tab, 0 goes to the last one."
|
||||
msgstr ""
|
||||
"Où n est n'importe quelle touche de la barre numérique.\n"
|
||||
"Aller à l'onglet n, 0 va au dernier."
|
||||
|
||||
#. type: Ss
|
||||
#: badwolf.1:60
|
||||
#, no-wrap
|
||||
msgid "DEFAULT ONES"
|
||||
msgstr "PAR DÉFAULTS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:62
|
||||
msgid "Here is a incomplete list of the default Webkit/GTK keybindings:"
|
||||
msgstr ""
|
||||
"Ceci est une liste incomplète des raccourcis par défaults dans WebKit/GTK:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:63
|
||||
#, no-wrap
|
||||
msgid "any Ctrl-PageUp / Ctrl-PageDown"
|
||||
msgstr "tout Ctrl-PageUp / Ctrl-PageDown"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:65
|
||||
#, no-wrap
|
||||
msgid "search Ctrl-g / Ctrl-Shift-g"
|
||||
msgstr "recherche Ctrl-g / Ctrl-Maj-g"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:67
|
||||
msgid ""
|
||||
"When the search box is focused it goes to the Next/Previous search term."
|
||||
msgstr ""
|
||||
"Quand le champ de recherche est actif, aller au résultat précédent/suivant."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:67
|
||||
#, no-wrap
|
||||
msgid "search Escape"
|
||||
msgstr "recherche Échap"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:69
|
||||
msgid "Cancels current search"
|
||||
msgstr "Annule la recherche actuelle."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:69
|
||||
#, no-wrap
|
||||
msgid "textarea Ctrl-;"
|
||||
msgstr "champ-texte Ctrl-;"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:71
|
||||
msgid "Insert Emoji"
|
||||
msgstr "Insérer un Émoji"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:72
|
||||
#, no-wrap
|
||||
msgid "ENVIRONMENT"
|
||||
msgstr "ENVIRONMENT"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:74
|
||||
#, no-wrap
|
||||
msgid "Ev BADWOLF_L10N"
|
||||
msgstr "Ev BADWOLF_L10N"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:80
|
||||
msgid ""
|
||||
"A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and "
|
||||
"COUNTRY in ISO-3166. For example E<.Ic BADWOLF_L10N=\"en_GB:fr_FR:"
|
||||
"de_DE\">. When this variable isn't set, spelling isn't activated. A more "
|
||||
"generic variable name is also intended to be used in the future."
|
||||
msgstr ""
|
||||
"Une liste séparé par des deux-points dans le format langue_PAYS où la langue "
|
||||
"est en ISO-639 et le PAYS en ISO-3166.\n"
|
||||
"Par example E<.Ic BADWOLF_L10N=\"en_GB:fr_FR:de_DE\">.\n"
|
||||
"Quand cette variable n'est pas configuré, la correction orthographique est "
|
||||
"désactivée.\n"
|
||||
"Un nom plus générique est voulu pour le futur."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:85
|
||||
msgid ""
|
||||
"To get the list of supported dictionaries execute E<.Ic enchant-lsmod-2 -"
|
||||
"list-dicts> or before enchant 2.0: E<.Ic enchant-lsmod -list-dicts>"
|
||||
msgstr ""
|
||||
"Pour avoir la liste des dictionaires installés, executez: E<.Ic enchant-"
|
||||
"lsmod-2 -list-dicts> ou avant enchant 2.0: E<.Ic enchant-lsmod -list-dicts>"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:86
|
||||
#, no-wrap
|
||||
msgid "FILES"
|
||||
msgstr "FICHIERS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:92
|
||||
msgid ""
|
||||
"The following paths are using E<.Xr sh 1> syntax to correctly support XDG "
|
||||
"Base Directory Specification, you can use the E<.Xr echo 1> command to check "
|
||||
"where it is on your system."
|
||||
msgstr ""
|
||||
"Les chemins suivants utilisent la syntaxe de E<.Xr sh 1> pour correctement "
|
||||
"supporter la XDG Base Directory Specification, vous pouver utiliser la "
|
||||
"commande E<.Xr echo 1> pour vérifier où cela se trouve sur votre système."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:94
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json"
|
||||
msgstr "Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:97
|
||||
msgid ""
|
||||
"WebKit-specific content-filter file, this allows to block unwanted content "
|
||||
"(ads, nagware, ...). For some introductory information about the format see:"
|
||||
msgstr ""
|
||||
"Fichier content-filter spécifique à WebKit, cela permet de blocker le "
|
||||
"contenu indésirable (pubs, nagware, …).\n"
|
||||
"Pour une introduction au format, voir (en anglais):"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:102
|
||||
msgid "For a converter using AblockPlus-style filters, try:"
|
||||
msgstr "Pour un convertiseur de filtres compatibles AdBlockPlus, essayez:"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:105
|
||||
msgid "For a ready-to-use file (that you should update periodically), try:"
|
||||
msgstr ""
|
||||
"Pour un fichier prêt à l'usage (que vous devrez mettre à jour "
|
||||
"périodiquement), essayez:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:106
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters"
|
||||
msgstr "Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:109
|
||||
msgid ""
|
||||
"This is where the compiled filters are stored, the file(s) in it are "
|
||||
"automatically generated and so shouldn't be edited. Documented here only "
|
||||
"for sandboxing / access-control purposes."
|
||||
msgstr ""
|
||||
"Stockage des filtres compilés, les fichiers présents sont automatiquement "
|
||||
"générés et ne doivent pas être édité.\n"
|
||||
"Documenté ici seulement pour les isolations ou la gestion des contrôle "
|
||||
"d'accès."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:109
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:114
|
||||
msgid ""
|
||||
"XBEL (XML Bookmark Exchange Language) file, known to be currently supported "
|
||||
"by: E<.Xr elinks 1>, E<.Xr konqueror 1>, E<.Xr kbookmarkeditor 1>."
|
||||
msgstr ""
|
||||
"Fichier XBEL (XML Bookmark Exchange Language; Language XML d'Échange de "
|
||||
"Marques-Pages), connu pour être supporté par: E<.Xr elinks 1>, E<.Xr "
|
||||
"konqueror 1>, E<.Xr kbookmarkeditor 1>."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:116
|
||||
msgid "You can do a symbolic link from their path, but you might prefer to use"
|
||||
msgstr ""
|
||||
"Vous pouvez faire un lien symbolique depuis leur fichiers, mais vous pouvez "
|
||||
"aussi utiliser"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:120
|
||||
msgid ""
|
||||
"which is natively supported by E<.Nm> to automatically merge multiple XBEL "
|
||||
"files."
|
||||
msgstr ""
|
||||
"qui est supporté nativement par E<.Nm> pour automatiquement fusionner "
|
||||
"plusieurs fichiers XBEL."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:122
|
||||
msgid ""
|
||||
"Also the bookmark entries aren't re-sorted, so you might want to put your "
|
||||
"most frequently used ones at the top of the file."
|
||||
msgstr ""
|
||||
"Aussi les marques-pages ne sont pas re-triés, vous pouvez donc mettre les "
|
||||
"plus fréquement utilisés au début du fichier."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:124
|
||||
msgid "For more information about this format see:"
|
||||
msgstr "Pour plus d'information à propos du format, voir (en anglais):"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:127
|
||||
msgid "For an example XBEL file see:"
|
||||
msgstr "Pour un example de fichier XBEL voir:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:128
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:130
|
||||
msgid "Directory containing the"
|
||||
msgstr "Répertoire contenant les"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:133
|
||||
msgid ""
|
||||
"to be loaded into E<.Nm . Note: They aren't the JavaScript-based Web-"
|
||||
"Extensions supported by Firefox or Chrome, but native code in shared objects "
|
||||
"using the WebKitGTK API.>"
|
||||
msgstr ""
|
||||
"pour être chargés dans E<.Nm . Note : Ce ne sont pas les Web-Extensions basé "
|
||||
"sur JavaScript et supporté par Firefox ou Chrome, mais du code natif dans "
|
||||
"des shared objects qui utilisent l'API WebKitGTK.>"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:135
|
||||
msgid "Examples of useful extensions may be found at:"
|
||||
msgstr "Des examples de quelques extensions utiles peuvent être trouvés sur:"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:136
|
||||
#, no-wrap
|
||||
msgid "Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css"
|
||||
msgstr "Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css"
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:137
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:142
|
||||
msgid ""
|
||||
"CSS files (respectively system and user-level) for styling E<.Nm> "
|
||||
"interface. See"
|
||||
msgstr ""
|
||||
"Fichiers CSS (respectivement système et utilisateur) pour changer le style "
|
||||
"de l'interface de E<.Nm .>\n"
|
||||
"Voir"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:144
|
||||
msgid "for the properties being available."
|
||||
msgstr "pour la liste des propriétés disponibles."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:150
|
||||
msgid ""
|
||||
"For testing your styles I would recommend using the E<.Ev "
|
||||
"GTK_DEBUG=interactive> environment variable on launching E<.Nm> and going to "
|
||||
"the CSS tab."
|
||||
msgstr ""
|
||||
"Pour tester les styles je recommende d'utiliser la variable d'environemnt E<."
|
||||
"Ev GTK_DEBUG=interactive> et d'aller à l'onglet CSS."
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:150
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/"
|
||||
msgstr "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:156
|
||||
msgid ""
|
||||
"Directory containing JS userscripts (ending in E<.Ic .js>) ran at the start "
|
||||
"of page loads, nesting down into iframes, useful to override website "
|
||||
"behaviors or add missing features to websites."
|
||||
msgstr ""
|
||||
"Dossier contenant les userscripts JavaScript (finisant en E<.Ic .js>) lancés "
|
||||
"à chaque chargement de page, descendant dans les iframes, utile pour changer "
|
||||
"le comportement ou rajouter des fonctionalitées aux sites web."
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:159
|
||||
msgid ""
|
||||
"Please note that for now unlike GreaseMonkey-style userscripts, they are "
|
||||
"always run, regardless of the hostname / URLs."
|
||||
msgstr ""
|
||||
"Veuillez noter que pour l'instant, contrairement aux userscripts à la "
|
||||
"GreaseMonkey, ils sont toujours exécutés, sans filtrage de domaines / URLs."
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:160
|
||||
#, no-wrap
|
||||
msgid "AUTHORS"
|
||||
msgstr "AUTHORS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:162
|
||||
msgid "E<.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me>"
|
||||
msgstr "E<.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me>"
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:162
|
||||
#, no-wrap
|
||||
msgid "BUGS"
|
||||
msgstr "BUGS"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:164
|
||||
msgid "You can submit contributions or tickets to"
|
||||
msgstr "Vous pouvez soumettre des contributions ou des tickets à"
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:167
|
||||
msgid "with E<.Xr git-send-email 1> for patches."
|
||||
msgstr "avec E<.Xr git-send-email 1> pour les modifications."
|
545
badwolf/po/manpage.pot
Executable file
|
@ -0,0 +1,545 @@
|
|||
# SPDX-FileCopyrightText: 2019-2022 Badwolf Authors <https://hacktivis.me/projects/badwolf>
|
||||
# SPDX-License-Identifier: BSD-3-Clause
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Badwolf 1.2.0+geb77866.develop\n"
|
||||
"Report-Msgid-Bugs-To: contact+badwolf-msgid@hacktivis.me\n"
|
||||
"POT-Creation-Date: 2023-03-17 08:18+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. type: Dd
|
||||
#: badwolf.1:4
|
||||
#, no-wrap
|
||||
msgid "2022-07-13"
|
||||
msgstr ""
|
||||
|
||||
#. type: Dt
|
||||
#: badwolf.1:5
|
||||
#, no-wrap
|
||||
msgid "BADWOLF 1"
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:7
|
||||
#, no-wrap
|
||||
msgid "NAME"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:9
|
||||
msgid "E<.Nm badwolf>"
|
||||
msgstr ""
|
||||
|
||||
#. type: Nd
|
||||
#: badwolf.1:9
|
||||
#, no-wrap
|
||||
msgid "minimalist and privacy-oriented web browser based on WebKitGTK"
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:10
|
||||
#, no-wrap
|
||||
msgid "SYNOPSIS"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:14
|
||||
msgid "E<.Nm> E<.Op Ar webkit/gtk options> E<.Op Ar URLs or paths>"
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:14
|
||||
#, no-wrap
|
||||
msgid "DESCRIPTION"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:17
|
||||
msgid ""
|
||||
"E<.Nm> is a minimalist browser that cares about privacy, it is based on "
|
||||
"WebKitGTK and thus also accepts WebKitGTK (and dependencies) flags and "
|
||||
"environment variables, unfortunately there doesn't seems to be manpages for "
|
||||
"theses."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:21
|
||||
msgid ""
|
||||
"Runtime configuration specific to E<.Nm> will probably get added at a later "
|
||||
"release."
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:21
|
||||
#, no-wrap
|
||||
msgid "KEYBINDINGS"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:25
|
||||
msgid ""
|
||||
"The following section lists the keybinding by their action, each item is "
|
||||
"described by the widget the focus is on or E<.Aq any> if it works for the "
|
||||
"whole window, followed by the keybind it grabs."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:26
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-Scroll"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:28
|
||||
msgid "Zooms the webpage in/out."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:28
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-0"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:30
|
||||
msgid "Resets webpage zoom to 100%."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:30
|
||||
#, no-wrap
|
||||
msgid "webview Ctrl-MousePrimary, webview MouseMiddle"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:32
|
||||
msgid "Opens the selected link in a new tab. (Note: JS still overrides the event)"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:32
|
||||
#, no-wrap
|
||||
msgid "any Ctrl-t"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:34
|
||||
msgid "Creates a new tab (in a new session, similar as pressing the button)"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:34
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-F4, browser Alt-d"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:36
|
||||
msgid "Closes the current tab"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:36
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-f"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:38
|
||||
msgid "Focuses on the search entry"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:38
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-l"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:40
|
||||
msgid "Focuses on the location(URL) entry"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:40
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-Shift-r / Ctrl-r, browser F5"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:42
|
||||
msgid "Reloads the content in the current tab (with/without clearing cache)"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:42
|
||||
#, no-wrap
|
||||
msgid "browser Escape"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:44
|
||||
msgid "Stops loading the content in the current tab"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:44
|
||||
#, no-wrap
|
||||
msgid "browser F7"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:46
|
||||
msgid "Toggles caret browsing."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:46
|
||||
#, no-wrap
|
||||
msgid "browser F12"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:48
|
||||
msgid "Opens the web inspector."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:48
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-[ / Ctrl-]"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:50
|
||||
msgid "Go back/forward in current tab's history"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:50
|
||||
#, no-wrap
|
||||
msgid "browser Ctrl-p"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:52
|
||||
msgid "Print the current page. (spawns a dialog)"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:52
|
||||
#, no-wrap
|
||||
msgid "any Alt-Left / Alt-Right"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:54 badwolf.1:65
|
||||
msgid "Go to the previous/next tab"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:54
|
||||
#, no-wrap
|
||||
msgid "any F1"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:56
|
||||
msgid "Shows the about dialog"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:56
|
||||
#, no-wrap
|
||||
msgid "any Alt-n"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:59
|
||||
msgid "Where n is any numeric-row key. Go to the n-th tab, 0 goes to the last one."
|
||||
msgstr ""
|
||||
|
||||
#. type: Ss
|
||||
#: badwolf.1:60
|
||||
#, no-wrap
|
||||
msgid "DEFAULT ONES"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:62
|
||||
msgid "Here is a incomplete list of the default Webkit/GTK keybindings:"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:63
|
||||
#, no-wrap
|
||||
msgid "any Ctrl-PageUp / Ctrl-PageDown"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:65
|
||||
#, no-wrap
|
||||
msgid "search Ctrl-g / Ctrl-Shift-g"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:67
|
||||
msgid "When the search box is focused it goes to the Next/Previous search term."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:67
|
||||
#, no-wrap
|
||||
msgid "search Escape"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:69
|
||||
msgid "Cancels current search"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:69
|
||||
#, no-wrap
|
||||
msgid "textarea Ctrl-;"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:71
|
||||
msgid "Insert Emoji"
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:72
|
||||
#, no-wrap
|
||||
msgid "ENVIRONMENT"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:74
|
||||
#, no-wrap
|
||||
msgid "Ev BADWOLF_L10N"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:80
|
||||
msgid ""
|
||||
"A colon-separated list in the form lang_COUNTRY where lang is in ISO-639 and "
|
||||
"COUNTRY in ISO-3166. For example E<.Ic "
|
||||
"BADWOLF_L10N=\"en_GB:fr_FR:de_DE\">. When this variable isn't set, spelling "
|
||||
"isn't activated. A more generic variable name is also intended to be used "
|
||||
"in the future."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:85
|
||||
msgid ""
|
||||
"To get the list of supported dictionaries execute E<.Ic enchant-lsmod-2 "
|
||||
"-list-dicts> or before enchant 2.0: E<.Ic enchant-lsmod -list-dicts>"
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:86
|
||||
#, no-wrap
|
||||
msgid "FILES"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:92
|
||||
msgid ""
|
||||
"The following paths are using E<.Xr sh 1> syntax to correctly support XDG "
|
||||
"Base Directory Specification, you can use the E<.Xr echo 1> command to check "
|
||||
"where it is on your system."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:94
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_CONFIG_HOME:-$HOME/.config}/badwolf/content-filters.json"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:97
|
||||
msgid ""
|
||||
"WebKit-specific content-filter file, this allows to block unwanted content "
|
||||
"(ads, nagware, ...). For some introductory information about the format "
|
||||
"see:"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:102
|
||||
msgid "For a converter using AblockPlus-style filters, try:"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:105
|
||||
msgid "For a ready-to-use file (that you should update periodically), try:"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:106
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_CACHE_HOME:-$HOME/.cache}/badwolf/filters"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:109
|
||||
msgid ""
|
||||
"This is where the compiled filters are stored, the file(s) in it are "
|
||||
"automatically generated and so shouldn't be edited. Documented here only "
|
||||
"for sandboxing / access-control purposes."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:109
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/bookmarks.xbel"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:114
|
||||
msgid ""
|
||||
"XBEL (XML Bookmark Exchange Language) file, known to be currently supported "
|
||||
"by: E<.Xr elinks 1>, E<.Xr konqueror 1>, E<.Xr kbookmarkeditor 1>."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:116
|
||||
msgid "You can do a symbolic link from their path, but you might prefer to use"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:120
|
||||
msgid ""
|
||||
"which is natively supported by E<.Nm> to automatically merge multiple XBEL "
|
||||
"files."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:122
|
||||
msgid ""
|
||||
"Also the bookmark entries aren't re-sorted, so you might want to put your "
|
||||
"most frequently used ones at the top of the file."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:124
|
||||
msgid "For more information about this format see:"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:127
|
||||
msgid "For an example XBEL file see:"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:128
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/webkit-web-extension/"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:130
|
||||
msgid "Directory containing the"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:133
|
||||
msgid ""
|
||||
"to be loaded into E<.Nm . Note: They aren't the JavaScript-based "
|
||||
"Web-Extensions supported by Firefox or Chrome, but native code in shared "
|
||||
"objects using the WebKitGTK API.>"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:135
|
||||
msgid "Examples of useful extensions may be found at:"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:136
|
||||
#, no-wrap
|
||||
msgid "Pa ${DATADIR:-/usr/local/share}/badwolf/interface.css"
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:137
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/interface.css"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:142
|
||||
msgid ""
|
||||
"CSS files (respectively system and user-level) for styling E<.Nm> "
|
||||
"interface. See"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:144
|
||||
msgid "for the properties being available."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:150
|
||||
msgid ""
|
||||
"For testing your styles I would recommend using the E<.Ev "
|
||||
"GTK_DEBUG=interactive> environment variable on launching E<.Nm> and going to "
|
||||
"the CSS tab."
|
||||
msgstr ""
|
||||
|
||||
#. type: It
|
||||
#: badwolf.1:150
|
||||
#, no-wrap
|
||||
msgid "Pa ${XDG_DATA_HOME:-$HOME/.local/share}/badwolf/scripts/"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:156
|
||||
msgid ""
|
||||
"Directory containing JS userscripts (ending in E<.Ic .js>) ran at the start "
|
||||
"of page loads, nesting down into iframes, useful to override website "
|
||||
"behaviors or add missing features to websites."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:159
|
||||
msgid ""
|
||||
"Please note that for now unlike GreaseMonkey-style userscripts, they are "
|
||||
"always run, regardless of the hostname / URLs."
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:160
|
||||
#, no-wrap
|
||||
msgid "AUTHORS"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:162
|
||||
msgid "E<.An Haelwenn (lanodan) Monnier Aq Mt contact+badwolf@hacktivis.me>"
|
||||
msgstr ""
|
||||
|
||||
#. type: Sh
|
||||
#: badwolf.1:162
|
||||
#, no-wrap
|
||||
msgid "BUGS"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:164
|
||||
msgid "You can submit contributions or tickets to"
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
#: badwolf.1:167
|
||||
msgid "with E<.Xr git-send-email 1> for patches."
|
||||
msgstr ""
|