Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
86d907f
fix: find-devices crash (#54)
furudbat Dec 5, 2025
f4984d0
fix: enable pmd in pkmn
furudbat Dec 5, 2025
b0365e7
Merge pull request #55 from furudbat/bugfix/find-devices-crash
saatvik333 Dec 6, 2025
8068033
fix: critical bug fixes for memory safety and config hot-reload
saatvik333 Dec 6, 2025
3c38758
feat: v1.3.0 - anti-aliasing, interactive keyboard detection, hot-rel…
saatvik333 Dec 6, 2025
b2efcff
fix: Prevent Wayland overlay layer from auto-hiding in fullscreen and…
saatvik333 Dec 6, 2025
19fb157
feat: add GitHub Actions workflow for AUR publishing and a contributi…
saatvik333 Dec 6, 2025
b29659e
feat: keyboard hand mapping (v1.3.1)
saatvik333 Dec 6, 2025
e08ce05
Release v1.3.2: Fix monitor reconnection (#15)
saatvik333 Dec 7, 2025
d7f9698
Merge branch 'main' of https://github.com/saatvik333/wayland-bongocat…
furudbat Dec 7, 2025
578c27b
fix: find_input_devices restore all/old functions
furudbat Dec 7, 2025
1b7e87a
Merge tag 'v1.3.1' into develop
furudbat Dec 7, 2025
84b1d15
Merge tag 'v1.3.2' into develop
furudbat Dec 8, 2025
cd943e6
Update README
furudbat Dec 8, 2025
07ecebb
cmake: add formatting and cmake-format
furudbat Dec 8, 2025
81fdf02
chore: formatting
furudbat Dec 9, 2025
d6206f2
chore: fix warnings & formatting
furudbat Dec 9, 2025
d16553c
Update README
furudbat Dec 9, 2025
64d65d5
refactor: rename context classes
furudbat Dec 9, 2025
7b1bebd
fix: make build
furudbat Dec 9, 2025
bce5efa
fix: anti-aliasing
furudbat Dec 10, 2025
38470cd
fix: monitor switching on config reload
furudbat Dec 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Clang-Format Configuration for wayland-bongocat
# Best practices for C23-compatible code
---
# Base style
BasedOnStyle: LLVM
IndentWidth: 2
---
# Language
Language: Cpp
Standard: Latest

# Indentation
IndentWidth: 2
TabWidth: 2
UseTab: Never
IndentCaseLabels: false
IndentPPDirectives: AfterHash
IndentExternBlock: NoIndent

# Column limit
ColumnLimit: 120

# Alignment
AlignAfterOpenBracket: Align
AlignArrayOfStructures: Left
AlignConsecutiveAssignments: false
AlignConsecutiveBitFields: Consecutive
AlignConsecutiveDeclarations: false
AlignConsecutiveMacros: Consecutive
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: true

# Pointer and reference alignment
PointerAlignment: Right
ReferenceAlignment: Left
DerivePointerAlignment: false

# Braces
BreakBeforeBraces: Attach
BraceWrapping:
AfterCaseLabel: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeElse: false
BeforeWhile: false
IndentBraces: false

# Line breaks
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
BinPackArguments: true
BinPackParameters: true
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakStringLiterals: true
NamespaceIndentation: Inner
FixNamespaceComments: true
BreakConstructorInitializers: BeforeComma
ConstructorInitializerAllOnOneLineOrOnePerLine: true
AllowAllConstructorInitializersOnNextLine: false
IndentWrappedFunctionNames: false
AlwaysBreakTemplateDeclarations: Yes

# Spaces
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeParens: ControlStatements
SpaceBeforeSquareBrackets: false
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInCStyleCastParentheses: false
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false

# Includes
SortIncludes: CaseSensitive
IncludeBlocks: Regroup
IncludeCategories:
# Project headers first (quoted includes)
- Regex: '^"'
Priority: 1
# System headers
- Regex: "^<"
Priority: 2

# Penalties (to control line breaking decisions)
PenaltyBreakAssignment: 2
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1000000
PenaltyReturnTypeOnItsOwnLine: 60

# Miscellaneous
KeepEmptyLinesAtTheStartOfBlocks: false
MaxEmptyLinesToKeep: 1
ReflowComments: true
SeparateDefinitionBlocks: Leave
InsertBraces: false
RemoveBracesLLVM: false
---
Language: JavaScript
IndentWidth: 2
ColumnLimit: 120
134 changes: 134 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Clang-Tidy Configuration for wayland-bongocat
# Static analysis for C code with best practices

# Enable checks
Checks: >
-*,
bugprone-*,
-bugprone-easily-swappable-parameters,
-bugprone-reserved-identifier,
clang-analyzer-*,
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
concurrency-*,
misc-*,
-misc-no-recursion,
performance-*,
portability-*,
readability-*,
-readability-identifier-length,
-readability-magic-numbers,
-readability-function-cognitive-complexity,
-readability-else-after-return,
-readability-uppercase-literal-suffix,
-misc-use-anonymous-namespace,
-readability-non-const-parameter,
-performance-enum-size,

# Only analyze project headers, not system/lib headers
HeaderFilterRegex: '.*/(include|src)/.*\.(h|hpp)$'

# Treat warnings as warnings (not errors by default)
WarningsAsErrors: ''

# Check options
CheckOptions:
# Naming conventions (C style)
- key: readability-identifier-naming.GlobalConstantCase
value: UPPER_CASE
- key: readability-identifier-naming.MacroDefinitionCase
value: UPPER_CASE
- key: readability-identifier-naming.FunctionCase
value: lower_case
- key: readability-identifier-naming.VariableCase
value: lower_case
- key: readability-identifier-naming.ParameterCase
value: lower_case
- key: readability-identifier-naming.StructCase
value: lower_case
- key: readability-identifier-naming.TypedefCase
value: lower_case
- key: readability-identifier-naming.TypedefSuffix
value: '_t'
- key: readability-identifier-naming.EnumCase
value: lower_case
# - key: readability-identifier-naming.EnumConstantCase
# value: UPPER_CASE
- key: readability-identifier-naming.MemberIgnoredRegexp
value: '^_?[a-z]+(_[a-z0-9]+)*$'
- key: readability-identifier-naming.PublicMemberIgnoredRegexp
value: '^_?[a-z]+(_[a-z0-9]+)*$'
# Naming conventions (C++ style)
- key: readability-identifier-naming.NamespaceCase
value: lower_case
- key: readability-identifier-naming.ClassCase
value: CamelCase
- key: readability-identifier-naming.ClassMemberCase
value: camelBack
- key: readability-identifier-naming.PrivateMemberCase
value: camelBack
- key: readability-identifier-naming.ProtectedMemberCase
value: camelBack
- key: readability-identifier-naming.PublicMemberCase
value: lower_case
- key: readability-identifier-naming.StaticConstantCase
value: UPPER_CASE
- key: readability-identifier-naming.ClassConstantCase
value: CamelCase
- key: readability-identifier-naming.ConstexprMethodCase
value: CamelCase
- key: readability-identifier-naming.ClassMethodCase
value: camelBack
- key: readability-identifier-naming.PublicMethodCase
value: camelBack
- key: readability-identifier-naming.PrivateMethodCase
value: camelBack
- key: readability-identifier-naming.ProtectedMethodCase
value: camelBack
- key: readability-identifier-naming.ConstexprMethodCase
value: camelBack
- key: readability-identifier-naming.LocalVariableCase
value: lower_case
- key: readability-identifier-naming.ConstantParameterCase
value: lower_case
- key: readability-identifier-naming.ParameterPackCase
value: lower_case
- key: readability-identifier-naming.LocalConstantCase
value: lower_case
- key: readability-identifier-naming.ConstexprVariableCase
value: UPPER_CASE
- key: readability-identifier-naming.TemplateParameterCase
value: CamelCase
- key: readability-identifier-naming.TemplateTemplateParameterCase
value: CamelCase

# Braces around statements
- key: readability-braces-around-statements.ShortStatementLines
value: '1'

# Function size limits (advisory)
- key: readability-function-size.LineThreshold
value: '200'
- key: readability-function-size.StatementThreshold
value: '100'
- key: readability-function-size.ParameterThreshold
value: '8'

# Performance checks
- key: performance-unnecessary-value-param.AllowedTypes
value: ''

# Misc settings
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
value: 'true'
- key: readability-identifier-length.IgnoredVariableNames
value: 'i|j|k|x|y|z'
- key: readability-identifier-length.IgnoredParameterNames
value: 'i|j|k|x|y|z'

# System header directories to ignore
SystemHeaders: false

# Use colors in diagnostics
UseColor: true

#FormatStyle: file
52 changes: 52 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# EditorConfig - Cross-editor consistency
# https://editorconfig.org

root = true

# Default settings for all files
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2

# C/C++ source and headers
[*.{c,h}]
indent_size = 2
max_line_length = 80

[*.{cpp,hpp}]
indent_size = 2
max_line_length = 80

# Makefile (requires tabs)
[Makefile]
indent_style = tab
indent_size = 8

# Shell scripts
[*.sh]
indent_size = 2

# Markdown
[*.md]
trim_trailing_whitespace = false
max_line_length = off

# XML (Wayland protocols)
[*.xml]
indent_size = 2

# YAML/Config files
[*.{yml,yaml,conf}]
indent_size = 2

# Nix files
[*.nix]
indent_size = 2

# JSON
[*.json]
indent_size = 2
Loading